Как установить заголовок авторизации с помощью curl


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

8 260

8 ответов:

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

см. раздел 6. Проверка подлинности http

проверка подлинности http

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

чтобы сказать curl использовать пользователя и пароль для аутентификации:

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

для сайта может потребоваться другой метод аутентификации (проверьте заголовки возвращается сервером), а потом-и NTLM, --дайджест --переговоры или даже -- anyauth может быть варианты, которые подходят вам.

Иногда ваш HTTP-доступ доступен только через использование HTTP полномочие. Это, кажется, особенно распространено в различных компаниях. Прокси HTTP может потребоваться свой собственный пользователь и пароль, чтобы позволить клиенту получить доступ к интернет. Чтобы указать те, с завитком, запустите что-то вроде:

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

Если ваш прокси-сервер требует проверки подлинности, чтобы быть сделано с помощью метода проверки подлинности NTLM, --использовать прокси-сервер по протоколу 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/

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

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

для HTTP Basic Auth:

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

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

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

греп маркер | вырезать -д-Ф1 | вырезать -д\" -Ф4

как это часть, которая имеет дело с извлечением токенов из ответа.

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