Как установить заголовок авторизации с помощью curl - PullRequest
329 голосов
/ 15 июня 2010

Как передать заголовок авторизации, используя cURL? (выполняется в /usr/bin/curl).

Ответы [ 8 ]

348 голосов
/ 15 июня 2010

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

См. Часть 6. Аутентификация HTTP

Аутентификация HTTP

Аутентификация HTTP - это возможность сообщить серверу свое имя пользователя и пароль, чтобыон может подтвердить, что вам разрешено выполнять запрос, который вы делаете.Базовая аутентификация, используемая в HTTP (это тип curl, используемый по умолчанию), основана на plain text , что означает, что она отправляет имя пользователя и пароль только слегка запутанно, но все же полностью читаема любым пользователем.который прослушивает сеть между вами и удаленным сервером.

Чтобы указать 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-ntlm, если для этого требуется Digest, используйте --proxy-digest.

Если вы используете какую-либо из этих опций user + password, но не указали парольную часть, curl запросит пароль в интерактивном режиме.

Обратите внимание, что при запуске программы ее параметры могутможно было увидеть при перечислении запущенных процессов системы.Таким образом, другие пользователи могут просматривать ваши пароли, если вы передадите их в виде простых параметров командной строки.Есть способы обойти это.

Стоит отметить, что хотя именно так работает HTTP-аутентификация, очень многие веб-сайты не будут использовать эту концепцию, когда они предоставляют вход в систему и т. Д. Подробнее см. В главе «Веб-вход» ниже.подробности об этом.

262 голосов
/ 31 декабря 2011

Просто добавьте, чтобы вам не пришлось переходить по ссылке:

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

или если вы пытаетесь выполнить аутентификацию отправки для OAuth 2:

curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com
135 голосов
/ 30 июля 2014

Жетоны на предъявителя выглядят так:

curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com
59 голосов
/ 04 июня 2014

(для тех, кто ищет 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);
49 голосов
/ 07 октября 2015

Это сработало для меня:

 curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/
16 голосов
/ 02 мая 2016

Для HTTP Basic Auth:

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

заменить _your_token_ и URL.

12 голосов
/ 12 апреля 2012

Будьте внимательны, если при использовании: curl -H "Authorization: token_str" http://www.example.com

token_str и Authorization должны быть разделены пробелами, иначе на стороне сервера не будет получена среда HTTP_AUTHORIZATION.

3 голосов
/ 22 марта 2018

Если у вас нет токена на момент совершения вызова, вам нужно будет сделать два вызова, один для получения токена, а другой - для извлечения токена из ответа, обратите внимание на

grep token |cut -d, -f1 |cut -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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...