2014-09-22 6 views
63

나는 Apigility (Apigility docu -> REST Service Tutorial)를 학습하고 컬을 통해 기본 인증과 POST 요청을 보내려고 해요 :cURL을 사용하여 기본 HTTP 인증을 올바르게 정의하는 방법은 무엇입니까?

$ curl -X POST -i -H "Content-Type: application/hal+json" -H "Authorization: Basic YXBpdXNlcjphcGlwd2Q=" http://apigilityhw.sandbox.loc/status 

YXBpdXNlcjphcGlwd2Q= 내 자격 증명 apiuser:apipwd와 기본 64 인코딩 된 문자열입니다. 자격 증명은 /data/htpasswd (apiuser:$apr1$3J4cyqEw$WKga3rQMkxvnevMuBaekg/)에 저장됩니다.

은 다음과 같습니다

HTTP/1.1 401 Unauthorized 
Server: nginx/1.4.7 
Date: Mon, 22 Sep 2014 07:48:47 GMT 
Content-Type: application/problem+json 
Transfer-Encoding: chunked 
Connection: keep-alive 
X-Powered-By: PHP/5.5.12-1~dotdeb.1 
WWW-Authenticate: Basic realm="api" 

어디 실수가 여기에있다? 그것을 작동시키는 방법? OAuth를 또는 다른 인증 서비스를 사용하는 경우

+0

답변을 업데이트했습니다. 나는 당신이 쿼리 문자열에 액세스 토큰을 전달해야한다고 생각해. – Wilt

답변

133
curl -u username:password http:// 
curl -u username http:// 

:

-u, --user < 사용자 : 비밀번호 >

서버 인증에 사용할 사용자 이름과 암호를 지정하십시오. -n, --netrc 및 --netrc-optional을 무시합니다.

단순히 사용자 이름을 지정하면 curl이 암호를 묻는 메시지를 표시합니다.

사용자 이름과 암호는 첫 번째 콜론에서 나뉘며, 은이 옵션으로 사용자 이름에 콜론을 사용할 수 없도록합니다. 암호는 여전히 있습니다.

Kerberos V5를 Windows 기반 서버와 함께 사용하는 경우 서버에 이 성공적으로 Kerberos 티켓을 얻으려면 사용자 이름에 Windows 도메인 이름을 포함시켜야합니다. 그렇지 않으면 초기 인증 핸드 셰이크가 실패 할 수 있습니다.

NTLM을 사용할 때 이라는 사용자 이름으로 지정할 수 있습니다. 예를 들어 이라는 단일 도메인과 포리스트가있는 경우 도메인이없는 사용자 이름으로 지정할 수 있습니다.

도메인 이름을 지정하려면 하위 로그온 이름 또는 UPN (사용자 이름) 형식을 사용하십시오. 예 : EXAMPLE \ user 및 [email protected] 는 Windows SSPI 지원 컬 바이너리를 사용 및 Kerberos V5를 수행 할 경우

는 이 함께 단일 콜론을 지정하여 사용자 환경에서 사용자 이름과 암호를 선택 협상, NTLM 또는 다음 에 컬 말할 수 다이제스트 인증 옵션 : "-u :".

이 옵션을 여러 번 사용하면 마지막 옵션이 사용됩니다.이 기본이기 때문에 당신이 --basic 플래그가 필요하지 않습니다

http://curl.haxx.se/docs/manpage.html#-u

참고.

+4

암호에 다음과 같은 특수 문자가 포함되어있는 경우? 또는 @라면 단일 틱에 넣어야합니다. curl -u 'username :? p @ ssword'http : // – tfb785

+0

이 실제 요청은 어떻게 생겼습니까? 나는 많은 사람들이 곱슬 곱슬하게 테스트하는 것처럼 느낀다. 그러나 그들이 사용하는 언어에 상관없이 코드를 작성한다. --user info는 헤더로 보내 집니까? 그렇다면 헤더가 어떻게 생겼는지 – Verty00

6

당신은 종종 쿼리 문자열 대신의 인증 헤더에 액세스 토큰을 보낼 수 있습니다, 그래서 뭔가 같은 : 문서 페이지에서

GET https://www.example.com/v1/users/1?access_token=abcdefghijklmnopqrstuvwxyz1234567890ABCD 
관련 문제