2016-06-19 3 views
2

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

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

Authorization: Bearer 123456789

также попытался:

Authorization: 123456789

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

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

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

ответ

1

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

Request headers bag is missing Authorization header in Symfony 2?

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

Да, с капиталом B в Носителе. Любая другая комбинация (не-капитал, OAuth вместо Bearer, только сам токен) потерпела неудачу.

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

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

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