서비스 기본 인증을 사용하는 방법?


10

서비스 기본 인증 모듈 을 사용하는 방법 ?

내 서비스에 http 기본 인증을 추가하고 싶습니다. 설치하고 엔드 포인트 구성에서 사용하도록 설정했습니다. 엔드 포인트 구성에서 "HTTP 기본 인증 Services_basic_auth에 사용할 수있는 설정이 없습니다"라는 메시지가 표시됩니다. 설정 페이지는 어디에 있습니까?

답변:


11

이 모듈은 드루팔 계정에 대해 웹 서비스 호출을 인증합니다.

  1. 모듈 활성화
  2. 드루팔 사용자 설정
  3. 사용자의 자격 증명으로 웹 서비스를 호출하십시오.

기본 인증을 사용하면 SSL을 사용하지 않으면 자격 증명을 가로 챌 수 있습니다.

이 모듈은 표준 PHP 인증 헤더를 사용하고 특정 역할이나 권한을 확인하지 않고 표준 drupal 로그인 양식을 제출합니다. 따라서 모든 drupal 사용자가 작동합니다.

curl 또는 wget으로 테스트 웹 서비스 호출을 작성 하여 테스트하십시오. curl stackoverflow 응답이 있는 호출 에서 PHP로 호출하는 방법에 대한 지침도 있습니다 .


단일 URL 호출에서이 구조를 사용하는 것과 완전히 다른가요? myusername : mypassword@example.com/callback
Citricguy

@Citricguy 다르지 않습니다. 이 구문은 URI 체계 en.wikipedia.org/wiki/URI_scheme에 의해 제공됩니다 . 나는 그렇게하지 않을 것입니다. 일부 REST 서비스는 브라우저에서 테스트 할 수 있으며 자격 증명이 브라우저 기록에 들어갔 을까 걱정됩니다. https를 사용하면 자격 증명이 암호화됩니다. 또한 http 라이브러리에 의존합니다. php http는 괜찮을 수도 있습니다 . php.net/manual/en/features.http-auth.php#44686에 대한 의견을 참조하십시오 . Microsoft 브라우저는 더 이상 구문을 지원하지 않으므로 javascript를 사용하여 호출하면 작동하지 않을 수 있습니다. 일부 API는이 방법을 사용합니다. goo.gl/eS9mqv
Interlated

죄송합니다. 통화를 구현하는 방식은 통화에 영향을 미치지 않습니다. 따라서 작동하는 경우 u : p@host.com으로 테스트하는 것이 좋습니다. 그런 식으로 구현하는 데 문제가있을 수 있다고 말하고 있습니다. 테스트를 간소화하기 위해 가능한 빨리 URL이 아닌 헤더를 생각합니다.
23

4

위의 모듈은 기본 액세스 인증 기술을 사용하여 서비스 요청을 인증하는 데 사용됩니다 . Drupal 사용자 이름 및 비밀번호를 사용하여 다음과 같이 서비스 요청에 인증 헤더를 추가하여 서비스 요청을 인증합니다.

사용자 에이전트가 서버 인증 자격 증명을 보내려고 할 때 권한 부여 헤더를 사용할 수 있습니다.

Authorization 헤더는 다음과 같이 구성됩니다.

사용자 이름과 비밀번호는 문자열 "username : password"로 결합됩니다

그런 다음 결과 문자열 리터럴은 Basechar의 RFC2045-MIME 변형을 사용하여 인코딩됩니다 (76 자 / 줄에 국한되지 않음). 인증 방법과 공백 (예 : "기본")이 인코딩 된 문자열 앞에 추가됩니다.

예를 들어, 사용자 에이전트가 'Aladdin'을 사용자 이름으로 사용하고 'open sesame'을 비밀번호로 사용하면 헤더는 다음과 같이 구성됩니다.

인증 : 기본 QWxhZGRpbjpvcGVuIHNlc2FtZQ ==

아래 예는 curl을 사용한 호출입니다.

curl -H "Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==" http://www.example.com/endpoint/yourservice

2
예, 이미 읽었지만 구현 방법을 모르십니까? 모듈 설치 후해야 할 일?. 어떤 도움이라도 좋을 것입니다. 감사합니다
Rijalul fikri

2
  1. 모듈이 활성화되면 구조> 서비스로 이동하십시오.
  2. 엔드 포인트를 선택 하고 편집을 클릭 하십시오 여기에 이미지 설명을 입력하십시오

  3. https://addons.mozilla.org/fr/firefox/addon/restclient/ 와 같은 도구를 사용 하여 클라이언트를 테스트하십시오.

여기에 이미지 설명을 입력하십시오

참고 : HTTP 기본 인증 옵션 이이 끝점의 리소스를 호출한다고 표시되어 있지만 401 대신 200 을 반환하는 것처럼 문제가 발생했습니다 . 다시 말해, 모듈이 엔드 포인트를 보호하지 못했습니다.

문제는 다음과 같습니다.

https://www.drupal.org/project/services_basic_auth
version: 7.x-1.4

모듈에 대한 패치를 수행하여 해결했습니다.

https://www.drupal.org/node/2734207


1

잘못된 점 : 모든 설정을 한 후 :

  1. 서비스 기본 인증 모듈 사용
  2. 예를 들어 다음과 같이 서비스 API 엔드 포인트를 작성하십시오.
  3. 편집 페이지에서 "HTTP 기본 인증"체크 상자 설정
  4. 사용자를 만들다

"게시 된 컨텐츠보기"권한을 비활성화하지 않으면 모든 사용자가 반환 된 결과로 서비스 API 엔드 포인트에 액세스 할 수 있습니다.


0

Services Basic Authentication모듈을 설치 한 후 서버의 REST 설정으로 이동하십시오.

/admin/structure/services

Edit옵션을 입력 하면 하단에 체크 박스가 있습니다 :

HTTP basic authentication

그것을 활성화하고 저장 버튼을 누르십시오.


HTTP 기본 인증에 어떤 사용자 : 비밀번호를 사용합니까?
AshwinP

-1

컨텐츠 액세스 모듈을 사용하는 것을 잊지 마십시오.

MPD 요청에 따라 추가 정보를 추가합니다.

컨텐츠 액세스 모듈을 사용하지 않는 경우 사용자는 다른 사용자가 작성하지 않은 컨텐츠를 포함하여 모든 컨텐츠를 볼 수 있습니다. 예를 들어, 사용자 A는 사용자 B가 보거나 현명하지 않아야하는 개인 데이터를 저장했습니다. 서비스 기본 인증 모듈은 인증을 활성화하지만 콘텐츠 액세스를 강제하지는 않습니다. 컨텐츠 액세스 모듈이이를 시행합니다. 컨텐츠 액세스 제어를 사용하지 않는 경우 사용자를 인증 할 필요가 없습니다.


이 모듈이 사용자의 요구를 어떻게 해결할 수 있는지 확장 할 수 있습니까?
mpdonadio

원래 답변에서 내 업데이트를 참조하십시오.
techwestcoastsfosea
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.