답변:
http://curl.haxx.se/docs/httpscripting.html
6 부 참조. HTTP 인증
HTTP 인증
HTTP 인증은 서버에 사용자 이름과 비밀번호를 알려주는 기능으로 요청한 요청을 수행 할 수 있는지 확인할 수 있습니다. HTTP에서 사용되는 기본 인증 (기본적으로 curl이 사용하는 유형)은 일반 텍스트를 기반으로하므로 사용자 이름과 비밀번호를 약간 난독 처리하지만 사용자와 원격 서버 사이의 네트워크에서 스니핑하는 사람은 여전히 읽을 수 있습니다.
curl에게 인증에 사용자 및 비밀번호를 사용하도록 지시하려면 다음을 수행하십시오.
curl --user name:password http://www.example.com
이 사이트에는 다른 인증 방법이 필요할 수 있으며 (서버에서 반환 한 헤더 확인) --ntlm, --digest, --negotiate 또는 --anyauth가 적합한 옵션 일 수 있습니다.
때로는 HTTP 프록시를 통해서만 HTTP 액세스를 사용할 수 있습니다. 이것은 여러 회사에서 특히 일반적으로 보인다. 클라이언트가 인터넷을 통과 할 수 있도록 HTTP 프록시에는 자체 사용자 및 비밀번호가 필요할 수 있습니다. curl을 가진 것을 지정하려면 다음과 같이 실행하십시오.
curl --proxy-user proxyuser:proxypassword curl.haxx.se
프록시에서 NTLM 방법을 사용하여 인증을 수행해야하는 경우 다이제스트 사용 --proxy-digest가 필요한 경우 --proxy-ntlm을 사용하십시오.
이러한 user + password 옵션 중 하나를 사용하지만 암호 부분을 제외하면 curl은 대화식으로 암호를 묻습니다.
프로그램이 실행될 때 시스템의 실행중인 프로세스를 나열 할 때 해당 매개 변수를 볼 수 있습니다. 따라서 일반 명령 줄 옵션으로 암호를 전달하면 다른 사용자가 암호를 볼 수 있습니다. 이것을 우회하는 방법이 있습니다.
HTTP 인증이 작동하는 방식이지만, 많은 웹 사이트는 로그인 등을 제공 할 때이 개념을 사용하지 않습니다. 자세한 내용은 아래 웹 로그인 장을 참조하십시오.
클릭 연결을하지 않아도되도록 추가하기 만하면됩니다.
curl --user name:password http://www.example.com
또는 OAuth 2에 대한 인증을 보내려고하는 경우 :
curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
-H
옵션은 중대하다.
-H Authorization: Basic <Base64EncodedCredentials>
HMAC-SHA256
누락되었다는 오류 가 항상 표시 되는 인증 헤더를 추가하려고합니다.
<Base64EncodedCredentials>
@ timothy-kansaki에서 언급 한대로가 필요한 경우 다음 명령을 사용하여 인코딩 된 자격 증명을 얻을 수 있습니다 cred="$( echo $NAME:$PASSWORD | base64 )"; curl -H "Authorization: Basic $cred" https://example.com
. 참고로, 참조 stackoverflow.com/questions/16918602/...
( php-curl 답변을 찾고있는 사람들을 위해 )
$service_url = 'https://example.com/something/something.json';
$curl = curl_init($service_url);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password"); //Your credentials goes here
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); //IMP if the url has https and you don't want to verify source certificate
$curl_response = curl_exec($curl);
$response = json_decode($curl_response);
curl_close($curl);
var_dump($response);
HTTP 기본 인증의 경우 :
curl -H "Authorization: Basic <_your_token_>" http://www.example.com
대체 _your_token_
및 URL.
echo -ne "<your-user>:<your-pass>" | base64 --wrap 0
가 기본 인증 토큰을 생성합니다.
-H "Authorization: Basic <_your_token_>"
같은 효과를 나타 --user login:password
냅니다. 당신은 그것을 확인할 수 있습니다curl -v
다음을 사용할 때주의하십시오.
curl -H "Authorization: token_str" http://www.example.com
token_str
와 Authorization
달리 서버 측이받지 않습니다 공백으로 구분해야합니다 HTTP_AUTHORIZATION
환경을.
통화 할 때 토큰이없는 경우 토큰을 얻기 위해 두 번, 응답에서 토큰을 추출하기 위해 두 번의 호출을해야합니다.
grep 토큰 | 컷 -d, -f1 | 컷 -d \ "-f4
응답에서 토큰 추출을 처리하는 부분이기 때문입니다.
echo "Getting token response and extracting token"
def token = sh (returnStdout: true, script: """
curl -S -i -k -X POST https://www.example.com/getToken -H \"Content-Type: application/json\" -H \"Accept: application/json\" -d @requestFile.json | grep token | cut -d, -f1 | cut -d\\" -f4
""").split()
토큰을 추출한 후 토큰을 사용하여 다음과 같이 후속 호출을 수행 할 수 있습니다.
echo "Token : ${token[-1]}"
echo "Making calls using token..."
curl -S -i -k -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer ${token[-1]}" https://www.example.com/api/resources