FOSOAuthServerBundle, заголовок авторизации не работает, но access_token в запросе работает

Я использую authorization_code тип предоставления. Я уже создал клиент, код auth_code, а затем создал токены доступа и обновления, все успешно.
Теперь я пытаюсь использовать access_token, и здесь возникает проблема. Если я поставлю его в качестве параметра запроса / запроса access_token=123456789работает отлично, получаю запрошенный ресурс.

Но я читал, что на самом деле лучше встраивать его в заголовок авторизации по соображениям безопасности. Я пытаюсь это и не работает:

Authorization: Bearer 123456789

также попробовал:

Authorization: 123456789

и ничего не работает. Все, что я получаю, это:

{
"error": "access_denied",
"error_description": "OAuth2 authentication required"}

Есть идеи? Если я использую SSL как на сервере, так и на клиенте, могу ли я безопасно использовать параметры вместо заголовков?

2

Решение

Ну, я нашел решение сам. На самом деле это можно считать «дублированным» вопросом, но я не знал его до сих пор. Пытаясь отследить ошибку, я обнаружил, что в профилировщике Symfony полностью отсутствует заголовок Authorization (к счастью, Symfony отправляет в ответ URL-адрес профилировщика, связанный с каждым запросом). Поэтому я искал «symfony отсутствует заголовок авторизации» (или что-то подобное, не помню) и нашел это:

В заголовке запроса отсутствует заголовок авторизации в Symfony 2?

Это был ответ мезода, который работал лучше всего для меня. Я просто поместил его в файл конфигурации виртуального хоста Apache и перезагрузил сервис Apache. Теперь это работает. Нет необходимости указывать его как параметр запроса ‘access_token’. Авторизация заголовка для выигрыша. И, кстати, единственное, что сейчас работало, было:
Authorization: Bearer 123456789

Да, с большой буквы в предъявителя. Любая другая комбинация (не заглавная, OAuth вместо Bearer, только сам токен) с треском провалилась.

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

RewriteEngine On
RewriteCond %{HTTP:Authorization} .+
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

Итак, это все. Я действительно очень надеюсь, что это поможет кому-то хотя бы половину того, что он сделал для меня.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]