【问题标题】:FOSOAuthServerBundle: Embed the access_token in the Authorization headerFOSOAuthServerBundle:将 access_token 嵌入到 Authorization 标头中
【发布时间】:2013-09-12 15:06:24
【问题描述】:

据我所知here,在查询字符串参数中保存敏感数据(如 access_token)不是一个好主意。

即:我试图避免这种情况:

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

因此,我尝试在 Authorization 标头中使用 access_token 发出 api 请求(建议使用 here. 尝试这样做时,我收到以下错误:

{
    "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 是否可以做到这一点?

注意:我在浏览器中验证过,令牌依然有效(未过期)。

【问题讨论】:

    标签: symfony oauth-2.0 fosoauthserverbundle


    【解决方案1】:

    正如@alanbem 提到的hereAuthorization Header 应如下所示:

    Authorization: Bearer N2FmNzhhNGM2MTI5N2JhMWJlYj...
    

    注意:如果您使用 AFHTTPClient 进行 iOS 开发,您只需覆盖 (void)setAuthorizationHeaderWithToken:(NSString *)token 方法即可。

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

    【讨论】:

      【解决方案2】:

      正如@Mick 所说,您可以使用 Authorization 标头。

      如果你在内部进行,在 PHPUnit 和任何其他使用 Symfony 请求的地方,你应该使用如下标题:

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

      当您正在测试并且不想弄乱您的 URI 或请求参数时,这一点很重要。

      【讨论】:

        猜你喜欢
        • 2016-10-20
        • 2013-05-13
        • 1970-01-01
        • 2019-11-05
        • 1970-01-01
        • 2020-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多