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

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

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

YXBpdXNlcjphcGlwd2Q= - строка в кодировке Base 64 с моими учетными данными apiuser:apipwd. Учетные данные сохраняются в /data/htpasswd (apiuser:$apr1$3J4cyqEw$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"

Где здесь ошибка? Как заставить это работать?

84 голоса | спросил automatix 22 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 22 Sep 2014 11:58:08 +0400 2014, 11:58:08

3 ответа


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

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

  

-u, --user <пользователь: пароль>

     

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

     

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

     

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

     

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

     

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

     

Чтобы указать имя домена, используйте либо имя для входа в систему нижнего уровня, либо имя участника-пользователя   (Имя участника-пользователя). Например, EXAMPLE \ user и   [email protected] соответственно.

     

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

     

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

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

Обратите внимание, что вам не нужно --basic , так как это значение по умолчанию.

ответил Gajus 12 FriEurope/Moscow2014-12-12T14:03:06+03:00Europe/Moscow12bEurope/MoscowFri, 12 Dec 2014 14:03:06 +0300 2014, 14:03:06
0

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

GET https://www.example.com/v1/users/1?access_token=abcdefghijklmnopqrstuvwxyz1234567890ABCD
ответил Wilt 27 +03002014-10-27T11:45:59+03:00312014bEurope/MoscowMon, 27 Oct 2014 11:45:59 +0300 2014, 11:45:59
0

в качестве заголовка

AUTH=$(echo -ne "$BASIC_AUTH_USER:$BASIC_AUTH_PASSWORD" | base64 --wrap 0)

curl \
  --header "Content-Type: application/json" \
  --header "Authorization: Basic $AUTH" \
  --request POST \
  --data  '{"key1":"value1", "key2":"value2"}' \
  https://example.com/
ответил srghma 5 WedEurope/Moscow2018-12-05T14:05:15+03:00Europe/Moscow12bEurope/MoscowWed, 05 Dec 2018 14:05:15 +0300 2018, 14:05:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132