В настоящее время я разрабатываю REST-API, защищенный HTTP-Basic для среды разработки. Поскольку настоящая аутентификация выполняется с помощью токена, я все еще пытаюсь понять, как отправить два заголовка авторизации.
Я пробовал это:
curl -i http://dev.myapp.com/api/users \
-H "Authorization: Basic Ym9zY236Ym9zY28=" \
-H "Authorization: Bearer mytoken123"
Я мог бы, например, отключить HTTP-аутентификацию для своего IP-адреса, но, поскольку я обычно работаю в разных средах с динамическими IP-адресами, это не лучшее решение. Так я что-то упускаю?
400 Bad request
. Глупо.Ответы:
Попробуйте это, чтобы нажать базовую аутентификацию по URL-адресу:
Если вышеперечисленное не работает, значит, вы не при чем. Поэтому попробуйте следующие варианты.
Вы можете передать токен под другим именем. Поскольку вы обрабатываете авторизацию из своего приложения. Таким образом, вы можете легко использовать эту гибкость для этой специальной цели.
Обратите внимание, я изменил заголовок на
Application-Authorization
. Итак, из вашего приложения перехватите токен под этим заголовком и обработайте то, что вам нужно сделать.Еще одна вещь , которую вы можете сделать, чтобы пройти
token
черезPOST
параметры и захватить значение параметра со стороны сервера. Например, передача токена с параметром curl post:источник
-v
параметром param. Вы обнаружите, что его отправкаAuthorization: Basic Ym9zY236Ym9zY28=, Authorization: Bearer mytoken123
в заголовке запроса. Со стороны сервера, если вы проверите, вы обнаружите, что у вас есть заголовок авторизации, подобный этому,Authorization: Basic Ym9zY236Ym9zY28=, Bearer mytoken123
разделенный запятой. Итак, я решил предложить вам альтернативы.Стандарт ( https://tools.ietf.org/html/rfc6750 ) говорит, что вы можете использовать:
Таким образом, можно передать множество токенов-носителей с URI, но делать это не рекомендуется (см. Раздел 5 стандарта).
источник
Если вы используете обратный прокси-сервер, такой как nginx между ними, вы можете определить собственный токен, например
X-API-Token
.В nginx вы бы переписали его для восходящего прокси (вашего остального api), чтобы он был просто auth:
... в то время как nginx может использовать исходный заголовок авторизации для проверки HTTP AUth.
источник
У меня была аналогичная проблема - аутентифицировать устройство и пользователя на устройстве. Я использовал
Cookie
заголовок рядом сAuthorization: Bearer...
заголовком.источник
Cookie
Заголовок уже часто используется для проверки подлинности.источник
Есть еще одно решение для тестирования API на сервере разработки.
HTTP Basic Authentication
только для веб-маршрутовКонфигурация веб-сервера для
nginx
иLaravel
будет такой:Authorization: Bearer
будет выполнять работу по защите сервера разработки от поисковых роботов и других нежелательных посетителей.источник
С помощью nginx вы можете отправить оба токена следующим образом (хотя это и противоречит стандарту):
Это работает до тех пор, пока первым является базовый токен - nginx успешно перенаправляет его на сервер приложений.
И затем вам нужно убедиться, что ваше приложение может правильно извлекать Bearer из указанной выше строки.
источник