답변:
이 모듈은 드루팔 계정에 대해 웹 서비스 호출을 인증합니다.
기본 인증을 사용하면 SSL을 사용하지 않으면 자격 증명을 가로 챌 수 있습니다.
이 모듈은 표준 PHP 인증 헤더를 사용하고 특정 역할이나 권한을 확인하지 않고 표준 drupal 로그인 양식을 제출합니다. 따라서 모든 drupal 사용자가 작동합니다.
curl 또는 wget으로 테스트 웹 서비스 호출을 작성 하여 테스트하십시오. curl stackoverflow 응답이 있는 호출 에서 PHP로 호출하는 방법에 대한 지침도 있습니다 .
위의 모듈은 기본 액세스 인증 기술을 사용하여 서비스 요청을 인증하는 데 사용됩니다 . Drupal 사용자 이름 및 비밀번호를 사용하여 다음과 같이 서비스 요청에 인증 헤더를 추가하여 서비스 요청을 인증합니다.
사용자 에이전트가 서버 인증 자격 증명을 보내려고 할 때 권한 부여 헤더를 사용할 수 있습니다.
Authorization 헤더는 다음과 같이 구성됩니다.
사용자 이름과 비밀번호는 문자열 "username : password"로 결합됩니다
그런 다음 결과 문자열 리터럴은 Basechar의 RFC2045-MIME 변형을 사용하여 인코딩됩니다 (76 자 / 줄에 국한되지 않음). 인증 방법과 공백 (예 : "기본")이 인코딩 된 문자열 앞에 추가됩니다.
예를 들어, 사용자 에이전트가 'Aladdin'을 사용자 이름으로 사용하고 'open sesame'을 비밀번호로 사용하면 헤더는 다음과 같이 구성됩니다.
인증 : 기본 QWxhZGRpbjpvcGVuIHNlc2FtZQ ==
아래 예는 curl을 사용한 호출입니다.
curl -H "Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" http://www.example.com/endpoint/yourservice
https://addons.mozilla.org/fr/firefox/addon/restclient/ 와 같은 도구를 사용 하여 클라이언트를 테스트하십시오.
참고 : HTTP 기본 인증 옵션 이이 끝점의 리소스를 호출한다고 표시되어 있지만 401 대신 200 을 반환하는 것처럼 문제가 발생했습니다 . 다시 말해, 모듈이 엔드 포인트를 보호하지 못했습니다.
문제는 다음과 같습니다.
https://www.drupal.org/project/services_basic_auth
version: 7.x-1.4
모듈에 대한 패치를 수행하여 해결했습니다.
Services Basic Authentication
모듈을 설치 한 후 서버의 REST 설정으로 이동하십시오.
/admin/structure/services
Edit
옵션을 입력 하면 하단에 체크 박스가 있습니다 :
HTTP basic authentication
그것을 활성화하고 저장 버튼을 누르십시오.
컨텐츠 액세스 모듈을 사용하는 것을 잊지 마십시오.
MPD 요청에 따라 추가 정보를 추가합니다.
컨텐츠 액세스 모듈을 사용하지 않는 경우 사용자는 다른 사용자가 작성하지 않은 컨텐츠를 포함하여 모든 컨텐츠를 볼 수 있습니다. 예를 들어, 사용자 A는 사용자 B가 보거나 현명하지 않아야하는 개인 데이터를 저장했습니다. 서비스 기본 인증 모듈은 인증을 활성화하지만 콘텐츠 액세스를 강제하지는 않습니다. 컨텐츠 액세스 모듈이이를 시행합니다. 컨텐츠 액세스 제어를 사용하지 않는 경우 사용자를 인증 할 필요가 없습니다.