Jak ustawić nagłówek autoryzacji za pomocą curl
Jak przekazać nagłówek autoryzacji za pomocą cURL? (wykonywalny w /usr/bin/curl
).
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.
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
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
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);
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/
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
.
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.
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
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