FOSOAuthServerBundle: вставьте access_token в заголовок авторизации.

Из того, что я вижу здесь, это не хорошая идея хранить конфиденциальные данные (например, access_token) в параметрах строки запроса.

i.e: я пытаюсь избежать этого:

http://localhost.dev/web/app_dev.php/api/articles?access_token=NzJhNz.....

Поэтому я попытался сделать запросы API с access_token в заголовке авторизации (что было предложено здесь. При попытке сделать это я получаю следующую ошибку:

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

Однако запрос именно такой, и токен, кажется, установлен правильно:

GET /web/app_dev.php/api/articles HTTP/1.1
Host    localhost.dev
Authorization   access_token=N2FmNzhhNGM2MTI5N2JhMWJlYjEdZjA0ZWM3ZTRhMTM1OGM0ODJjMzQzYjM7NTk3ZTEzNTVjZDczZTljMDk2MQ
Accept-Encoding gzip, deflate
Accept  application/json
Accept-Language en;q=1, fr;q=0.9, de;q=0.8, ja;q=0.7, nl;q=0.6, it;q=0.5
Connection  keep-alive
User-Agent  Localhost/1.0 (iPhone; iOS 6.1.4; Scale/2.00)

Кто-нибудь знает, возможно ли это с FOSOAuthServerBundle?

Примечание. Я проверил в браузере, и токен по-прежнему действителен (срок его действия не истек).


person Mick    schedule 12.09.2013    source источник


Ответы (2)


Как упоминалось здесь от @alanbem Заголовок авторизации должен выглядеть следующим образом:

Authorization: Bearer N2FmNzhhNGM2MTI5N2JhMWJlYj...

Примечание. Если вы используете AFHTTPClient для разработки под iOS, вам просто нужно переопределить метод (void)setAuthorizationHeaderWithToken:(NSString *)token.

- (void)setAuthorizationHeaderWithToken:(NSString *)token {
    [self setDefaultHeader:@"Authorization" value:[NSString stringWithFormat:@"Bearer %@", token]];
}
person Mick    schedule 13.09.2013

Как уже упоминалось @Mick, вы можете использовать заголовок авторизации.

Если вы делаете это внутри PHPUnit и в любом другом месте, где используется запрос Symfony, вы должны использовать такой заголовок:

$headers = ['HTTP_AUTHORIZATION' => 'Bearer  2FmNzhhNGM2MTI5N2JhMWJlYj...'];

Это важно, когда вы тестируете и не хотите испортить свой URI или параметры запроса.

person Renato Mefi    schedule 16.03.2015