【问题标题】:FOSOAuthServerBundle, Authorization header doesn't work but access_token in query worksFOSOAuthServerBundle,授权标头不起作用,但查询中的 access_token 有效
【发布时间】:2016-10-20 23:27:10
【问题描述】:

我正在使用authorization_code 授权类型。我已经创建了一个客户端,auth_code,然后创建了访问和刷新令牌,一切都成功了。 现在我尝试使用 access_token,问题就来了。如果我把它作为请求/查询参数access_token=123456789,它工作得很好,我得到了请求的资源。

但我了解到,出于安全原因,将其嵌入到 Authorization 标头中实际上更好。我正在尝试,但不起作用:

Authorization: Bearer 123456789

也试过了:

Authorization: 123456789

没有任何效果。我得到的只是:

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

有什么想法吗?如果我在服务器和客户端都使用 SSL,我可以安全地使用参数而不是标头吗?

【问题讨论】:

    标签: php symfony oauth-2.0 fosoauthserverbundle


    【解决方案1】:

    好吧,我自己找到了解决方案。这实际上可以被认为是一个“重复”的问题,但我直到现在才知道。试图追踪错误,我发现 Symfony 分析器中完全缺少 Authorization 标头(幸运的是,Symfony 在响应中发送了与每个请求相关的分析器 URL)。所以我搜索了“symfony 缺少授权标头”(或类似的东西,不记得了),发现了这个:

    Request headers bag is missing Authorization header in Symfony 2?

    mezod 的回答对我来说效果最好。我只是把它放在 Apache 的虚拟主机配置文件中并重新加载了 Apache 服务。现在它起作用了。无需将其作为“access_token”请求参数。 win 的授权标头。顺便说一句,现在唯一有效的是: Authorization: Bearer 123456789

    是的,在 Bearer 中使用大写 B。其他所有组合(非资本,OAuth 而不是 Bearer,只有令牌本身)都失败了。

    如果有人无法访问该链接,问题是将其放入您的虚拟主机配置文件中(我自己还没有尝试在 .htaccess 中):

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

    就是这样。我真的真的希望它至少能帮助到我的一半。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-24
      • 2018-07-24
      • 1970-01-01
      • 2016-02-11
      • 1970-01-01
      • 2018-07-07
      • 2023-04-09
      • 1970-01-01
      相关资源
      最近更新 更多