Я использую authorization_code
тип предоставления. Я уже создал клиент, код auth_code, а затем создал токены доступа и обновления, все успешно.
Теперь я пытаюсь использовать access_token, и здесь возникает проблема. Если я поставлю его в качестве параметра запроса / запроса access_token=123456789
работает отлично, получаю запрошенный ресурс.
Но я читал, что на самом деле лучше встраивать его в заголовок авторизации по соображениям безопасности. Я пытаюсь это и не работает:
Authorization: Bearer 123456789
также попробовал:
Authorization: 123456789
и ничего не работает. Все, что я получаю, это:
{
"error": "access_denied",
"error_description": "OAuth2 authentication required"}
Есть идеи? Если я использую SSL как на сервере, так и на клиенте, могу ли я безопасно использовать параметры вместо заголовков?
Ну, я нашел решение сам. На самом деле это можно считать «дублированным» вопросом, но я не знал его до сих пор. Пытаясь отследить ошибку, я обнаружил, что в профилировщике 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}]
Итак, это все. Я действительно очень надеюсь, что это поможет кому-то хотя бы половину того, что он сделал для меня.
Других решений пока нет …