Как установить заголовок авторизации с помощью curl
Как передать заголовок авторизации с помощью cURL? (исполняемый файл в /usr/bin/curl
).
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 или even –anyauth – варианты, которые вам подходят.
Иногда ваш HTTP-доступ доступен только с использованием прокси-сервера HTTP. Это особенно характерно для разных компаний. Для прокси-сервера HTTP может потребоваться собственный пользователь и пароль, чтобы клиент мог пройти через Интернет. Чтобы указать те, у кого есть curl, выполните что-то вроде:
curl --proxy-user proxyuser:proxypassword curl.haxx.se
Если ваш прокси-сервер требует, чтобы аутентификация выполнялась с использованием метода NTLM, используйте -proxy-ntlm, если он требует использования дайджеста -proxy-digest.
Если вы используете любой из этих параметров пользователя + пароль, но не учитываете часть пароля, curl подскажет пароль в интерактивном режиме.
Обратите внимание, что при запуске программы его параметры можно увидеть при перечислении запущенных процессов в системе. Таким образом, другие пользователи могут просматривать ваши пароли, если вы передадите их как простые параметры командной строки. Есть способы обойти это.
Стоит отметить, что, хотя так работает HTTP-аутентификация, очень многие веб-сайты не используют эту концепцию, когда они предоставляют логины и т. Д. Более подробную информацию об этом см. В главе «Вход в Интернет».
Просто добавив, что вам не нужно переходить по клику:
curl --user name:password http://www.example.com
или если вы пытаетесь отправить аутентификацию для OAuth 2:
curl -H "Authorization: OAuth " http://www.example.com
icons-носители выглядят следующим образом:
curl -H "Authorization: Bearer " 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