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

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

8 ответов


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 --proxy-user proxyuser:proxypassword curl.haxx.se

Если прокси-сервер требует проверки подлинности с помощью метода NTLM, используйте --proxy-ntlm, если это требует использования дайджеста --proxy-digest.

Если вы используете любой из этих параметров 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.


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

маркер grep / 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