2010-06-15 5 views

ответ

259

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

См часть 6. HTTP Authentication

HTTP Authentication

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

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

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, если он требует Digest использовать --proxy-дайджест.

Если вы используете любой из этих параметров пользователя + пароль, но не укажете пароль , curl запросит пароль в интерактивном режиме.

Обратите внимание, что при запуске программы его параметры могут быть видны при перечислении текущих процессов в системе. Таким образом, другие пользователи могут быть , которые могут просматривать ваши пароли, если вы передадите их в виде простой командной строки . Есть способы обойти это.

Стоит отметить, что в то время как это, как HTTP работает аутентификация, очень многие веб-сайты не будут использовать эту концепцию, когда они обеспечивают логины и т.д. См веб Войти раздел ниже для более подробной информации о том, что.

+1

нормально, но как в php? – Vixed

+11

@Vixed Этот вопрос явно не о PHP. [Что не так с результатами Google?)? – Oli

198

Просто добавить, так что вы не должны кликам:

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

или если вы пытаетесь сделать проверку подлинности для отправки OAuth 2:

curl -H "Authorization: OAuth <ACCESS_TOKEN>" http://www.example.com 
+14

Многие API теперь используют маркеры авторизации заголовка. Опция '-H' великолепна. – eliocs

+5

Если вы используете -u или --user, Curl будет кодировать учетные данные в Base64 и создавать заголовок следующим образом: '-H Авторизация: Basic ' –

12

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

token_str и Authorization необходимо разделить в противном случае серверная сторона не получит среду HTTP_AUTHORIZATION.

+0

Неверно, если требуется пустое пространство, ваш HTTP-сервер сломана. Также вам нужны две строки типа, а затем токен. –

46

(для тех, кто ищет 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); 
87

Предъявительские лексемы выглядеть следующим образом:

curl -H "Authorization: Bearer <ACCESS_TOKEN>" http://www.example.com 
+0

@esqew - А? У меня был тот же самый вопрос, и этот ответ называет его для меня. –

+5

И если вы хотите сделать авторизацию «Basic», просто замените «Bearer» на «Basic». –

26

Это работает для меня:

curl -H "Authorization: Token xxxxxxxxxxxxxx" https://www.example.com/ 
7

Для HTTP Basic Auth :

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

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

+0

При использовании oauth, откуда должен появиться маркер авторизации? Я пытаюсь использовать завиток для загрузки файлов с сайта, где я использую пользователя и пароль, но он, похоже, терпит неудачу из-за использования oauth2. – toasteez

+0

@toasteez вам нужно пройти поток Oauth2, чтобы получить токен. Обычно это двухэтапный процесс и должен быть подробно описан в документации сервера. – Devaroop

+6

хорошо ответ. маленький помощник 'echo -ne ': " | base64 --wrap 0' сгенерирует основной токен аутентификации. –

Смежные вопросы