Как установить заголовок авторизации с помощью 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_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