Programing

curl을 사용하여 인증 헤더를 설정하는 방법

lottogame 2020. 3. 2. 13:02
반응형

curl을 사용하여 인증 헤더를 설정하는 방법


cURL을 사용하여 인증 헤더를 전달하려면 어떻게합니까? (에서 실행 가능 /usr/bin/curl).


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

무기명 토큰은 다음과 같습니다.

curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com

( 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);

이것은 나를 위해 일했다 :

 curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/

HTTP 기본 인증의 경우 :

curl -H "Authorization: Basic <_your_token_>" http://www.example.com

대체 _your_token_및 URL.


다음을 사용할 때주의하십시오. curl -H "Authorization: token_str" http://www.example.com

token_strAuthorization달리 서버 측이받지 않습니다 공백으로 구분해야합니다 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 

참고 URL : https://stackoverflow.com/questions/3044315/how-to-set-the-authorization-header-using-curl



반응형