Как правильно определить базовую аутентификацию HTTP с помощью cURL?

Я учусь Apigility (Apigility docu - > учебник по обслуживанию REST) и пытается отправить запрос POST с базовой аутентификацией через cURL:

$ curl -X POST -i -H "Content-Type: application/hal+json" -H "Authorization: Basic YXBpdXNlcjphcGlwd2Q=" http://apigilityhw.sandbox.loc/status

YXBpdXNlcjphcGlwd2Q= является базовой 64 закодированной строкой с моими учетными данными apiuser:apipwd. Учетные данные сохраняются в /data/htpasswd (apiuser:$apr1J4cyqEw$WKga3rQMkxvnevMuBaekg/).

выглядит так:

HTTP/1.1 401 Unauthorized
Server: nginx/1.4.7
Date: Mon, 22 Sep 2014 07:48:47 GMT
Content-Type: application/problem+json
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.5.12-1~dotdeb.1
WWW-Authenticate: Basic realm="api"

где ошибка? Как это работает?

2 ответов


curl -u username:password http://
curl -u username http://

на странице документации:

- u, --user

Укажите имя пользователя и пароль для проверки подлинности сервера. Переопределяет -n, --netrc и --netrc-необязательно.

Если вы просто укажете имя пользователя, curl запросит пароль.

имя пользователя и пароли разделяются на первом двоеточии, которое делает невозможным использование двоеточия в имени пользователя с этим выбор. Пароль все еще может.

при использовании Kerberos V5 с сервером под управлением Windows необходимо включить имя домена Windows в имени пользователя, для того, чтобы сервер успешно получить билет Kerberos. Если вы этого не сделаете, то инициал рукопожатие аутентификации может завершиться ошибкой.

при использовании NTLM имя пользователя может быть указано просто как пользователь имя, без домена, если есть один домен и лес в например, ваша настройка.

чтобы указать имя домена, используйте имя Входа нижнего уровня или UPN (Имя участника-пользователя) форматы. Например, пример\user и user@example.com соответственно.

Если вы используете двоичный файл curl с поддержкой Windows SSPI и выполняете Kerberos V5, Согласование, NTLM или дайджест-аутентификация, тогда вы можете сказать curl выберите имя пользователя и пароль из среды, указав один двоеточие с этой опцией: "- u :".

Если используется эта опция несколько раз будет использоваться последний.

http://curl.haxx.se/docs/manpage.html#-u

обратите внимание, что вам не нужно --basic флаг по умолчанию.


при использовании OAuth или других служб аутентификации вы также можете часто отправлять маркер доступа в строке запроса, а не в заголовке авторизации, поэтому что-то вроде:

GET https://www.example.com/v1/users/1?access_token=abcdefghijklmnopqrstuvwxyz1234567890ABCD