현재 개발 환경을 위해 HTTP-Basic으로 보호되는 REST-API를 개발 중입니다. 실제 인증은 토큰을 통해 이루어지기 때문에 두 개의 인증 헤더를 보내는 방법을 알아 내려고 여전히 노력하고 있습니다.
나는 이것을 시도했다 :
curl -i http://dev.myapp.com/api/users \
-H "Authorization: Basic Ym9zY236Ym9zY28=" \
-H "Authorization: Bearer mytoken123"
예를 들어 내 IP에 대한 HTTP 인증을 비활성화 할 수 있지만 일반적으로 동적 IP를 사용하는 다른 환경에서 작업하기 때문에 이것은 좋은 솔루션이 아닙니다. 그래서 내가 뭔가를 놓치고 있습니까?
답변
URL에서 기본 인증을 푸시하려면 다음을 시도하십시오.
curl -i http://username:password@dev.myapp.com/api/users -H "Authorization: Bearer mytoken123"
^^^^^^^^^^^^^^^^^^
위의 방법이 작동하지 않으면 그와 관련이 없습니다. 따라서 다음 대안을 시도하십시오.
다른 이름으로 토큰을 전달할 수 있습니다. 귀하는 귀하의 애플리케이션에서 승인을 처리하고 있기 때문입니다. 따라서 이러한 특수 목적을 위해 이러한 유연성을 쉽게 사용할 수 있습니다.
curl -i http://dev.myapp.com/api/users \
-H "Authorization: Basic Ym9zY236Ym9zY28=" \
-H "Application-Authorization: mytoken123"
헤더를 Application-Authorization
. 따라서 응용 프로그램에서 해당 헤더 아래에있는 토큰을 찾아 필요한 작업을 처리합니다.
또 다른 방법 token
은 POST
매개 변수 를 전달 하고 서버 측에서 매개 변수 값을 가져 오는 것입니다. 예를 들어 curl post 매개 변수를 사용하여 토큰을 전달합니다.
-d "auth-token=mytoken123"
답변
표준 ( https://tools.ietf.org/html/rfc6750 )은 다음을 사용할 수 있다고 말합니다.
- 양식 인코딩 본문 매개 변수 : 인증 : Bearer mytoken123
- URI 쿼리 매개 변수 : access_token = mytoken123
따라서 URI로 많은 Bearer Token을 전달할 수 있지만 이렇게하는 것은 권장되지 않습니다 (표준의 섹션 5 참조).
답변
사이에 nginx와 같은 역방향 프록시를 사용하는 경우 X-API-Token
.
nginx에서는 업스트림 프록시 (나머지 API)가 인증이되도록 다시 작성합니다.
proxy_set_header Authorization $http_x_api_token;
… nginx는 원래 Authorization 헤더를 사용하여 HTTP AUth를 확인할 수 있습니다.
답변
비슷한 문제가 발생했습니다. 장치에서 장치와 사용자를 인증했습니다. Cookie
헤더와 함께 헤더를 사용했습니다 Authorization: Bearer...
.
답변
컬 –anyauth
curl에게 자체 인증 방법을 알아 내고 원격 사이트에서 지원한다고 주장하는 가장 안전한 방법을 사용하도록 지시합니다. 이는 먼저 요청을 수행하고 응답 헤더를 확인하여 수행되므로 추가 네트워크 왕복이 발생할 수 있습니다. –basic, –digest, –ntlm 및 –negotiate를 사용하여 수행 할 수있는 특정 인증 방법을 설정하는 대신 사용됩니다.
답변
개발 서버에서 API를 테스트하기위한 또 다른 솔루션이 있습니다.
HTTP Basic Authentication
웹 경로에 대해서만 설정- 모든 API 경로를 인증에서 제외하십시오.
에 대한 웹 서버 구성 nginx
과 Laravel
같이 될 것이다 :
location /api {
try_files $uri $uri/ /index.php?$query_string;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
auth_basic "Enter password";
auth_basic_user_file /path/to/.htpasswd;
}
Authorization: Bearer
웹 크롤러 및 기타 원치 않는 방문자로부터 개발 서버를 방어하는 작업을 수행합니다.
답변
nginx를 사용하면 다음과 같이 두 토큰을 모두 보낼 수 있습니다 (표준에 위배 되더라도).
Authorization: Basic basic-token,Bearer bearer-token
이것은 기본 토큰이 첫 번째 인 한 작동합니다. nginx는이를 애플리케이션 서버로 성공적으로 전달합니다.
그런 다음 애플리케이션이 위의 문자열에서 Bearer를 올바르게 추출 할 수 있는지 확인해야합니다.