Ответы:
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, запустите что-то вроде:
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
-H
Вариант велик.
-H Authorization: Basic <Base64EncodedCredentials>
HMAC-SHA256
всегда получая сообщение об ошибке пропуска заголовка авторизации
<Base64EncodedCredentials>
как упомянуто @ тимофеевка-kansaki, вы можете получить кодированное удостоверение с помощью команды: cred="$( echo $NAME:$PASSWORD | base64 )"; curl -H "Authorization: Basic $cred" https://example.com
. Для справки см. Stackoverflow.com/questions/16918602/…
Жетоны на предъявителя выглядят так:
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/
Authorization: bearer xxxxxxxxx
?
Bearer
Bearer
.
Для HTTP Basic Auth:
curl -H "Authorization: Basic <_your_token_>" http://www.example.com
заменить _your_token_
и URL.
echo -ne "<your-user>:<your-pass>" | base64 --wrap 0
сгенерирует базовый токен авторизации.
-H "Authorization: Basic <_your_token_>"
делает то же самое, что и --user login:password
. Вы можете проверить это сcurl -v
Будьте осторожны, когда вы используете:
curl -H "Authorization: token_str" http://www.example.com
token_str
и Authorization
должен быть отделен пробелом, иначе серверная часть не получит HTTP_AUTHORIZATION
среду.
Если у вас нет токена на момент совершения вызова, вам нужно будет сделать два вызова, один для получения токена, а другой - для извлечения токена из ответа, обратите внимание на
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