Jak ustawić nagłówek autoryzacji za pomocą curl

Jak przekazać nagłówek autoryzacji za pomocą cURL? (wykonywalny w /usr/bin/curl).

 260
Author: Vidya, 2010-06-15

8 answers

Http://curl.haxx.se/docs/httpscripting.html

Patrz część 6. Uwierzytelnianie HTTP

Uwierzytelnianie HTTP

Uwierzytelnianie HTTP to możliwość podania serwerowi nazwy użytkownika i Hasło, dzięki czemu może on zweryfikować, że możesz wykonać żądanie, które robiąc. Podstawowe uwierzytelnianie używane w HTTP (czyli typ curl używany przez default) is plain text based, czyli wysyła nazwę użytkownika i hasło tylko nieco zaciemnione, ale nadal w pełni czytelne dla każdego, kto wącha na sieć między tobą a serwerem zdalnym.

Aby powiedzieć curl, aby używał użytkownika i hasła do uwierzytelniania:

curl --user name:password http://www.example.com

Strona może wymagać innej metody uwierzytelniania (sprawdź nagłówki zwracane przez serwer), a następnie --ntlm, --digest, -- negotiate lub nawet -- anyauth może być rozwiązaniem, które Ci odpowiada.

Czasami dostęp HTTP jest dostępny tylko za pomocą HTTP proxy. Wydaje się to być szczególnie powszechne w różnych firmach. Proxy HTTP może wymagać własnego użytkownika i hasła, aby umożliwić klientowi przejście do Internet. Aby określić te z curl, Uruchom coś w stylu:

curl --proxy-user proxyuser:proxypassword curl.haxx.se

Jeśli serwer proxy wymaga uwierzytelnienia przy użyciu metody NTLM, Użyj --proxy-ntlm, jeśli wymaga Digest Użyj --proxy-digest.

Jeśli używasz któregokolwiek z tych opcji user + password, ale pomijasz hasło part, curl will poproś o interaktywne hasło.

Należy pamiętać, że gdy program jest uruchomiony, jego parametry mogą być widoczne podczas wymieniania uruchomionych procesów systemu. Tym samym inni użytkownicy mogą być możliwość oglądania haseł, jeśli podasz je jako zwykły wiersz poleceń opcje. Są sposoby na obejście tego.

Warto zauważyć, że chociaż tak działa Uwierzytelnianie HTTP, bardzo wiele stron internetowych nie będzie korzystać z tej koncepcji, gdy zapewniają logowanie itp. Zobacz też więcej szczegółów na ten temat znajdziesz w rozdziale Logowanie do sieci.

 289
Author: Oli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-28 23:37:32

Wystarczy dodać, żeby nie trzeba było klikać:

curl --user name:password http://www.example.com

Lub jeśli próbujesz wysłać uwierzytelnienie dla OAuth 2:

curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
 226
Author: Tony,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-31 18:52:30

Żetony na okaziciela wyglądają tak:

curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com
 113
Author: Steve Tauber,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-30 12:14:38

(dla tych, którzy szukają PHP-curl odpowiedz)

$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);
 51
Author: Rao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-04 19:21:42

To mi pomogło:

 curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/
 34
Author: timj98,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-09 09:50:42

Należy uważać, aby podczas stosowania: curl -H "Authorization: token_str" http://www.example.com

token_str i {[2] } muszą być oddzielone białą spacją, w przeciwnym razie strona serwera nie otrzyma środowiska HTTP_AUTHORIZATION.

 12
Author: jianpx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-31 23:49:20

Dla HTTP Basic Auth:

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

Zastąp _your_token_ i adres URL.

 10
Author: Devaroop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-28 10:52:22

Jeśli nie masz tokena w momencie nawiązania połączenia, musisz wykonać dwa połączenia, jedno, aby uzyskać token, a drugie, aby wyodrębnić token z odpowiedzi, zwróć uwagę na

Grep token / cut-d,- f1 | cut-d\" - f4

Ponieważ jest to część zajmująca się wyciąganiem tokena z odpowiedzi.

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

Po wypakowaniu tokenu możesz użyć tokenu do wykonywania kolejnych wywołań w następujący sposób.

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 
 1
Author: Upul Doluweera,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-22 06:56:42