php - FOSOAuthServerBundle,授权 header 不起作用,但查询中的 access_token 起作用

标签 php symfony oauth-2.0 fosoauthserverbundle

我正在使用 authorization_code 授权类型。我已经创建了一个客户端、auth_code,然后创建了访问和刷新 token ,一切都成功了。 现在我尝试使用access_token,但问题来了。如果我将其作为请求/查询参数 access_token=123456789,它可以正常工作,我可以获得请求的资源。

但我读到,出于安全原因,将其嵌入授权 header 实际上更好。我正在尝试这个但不起作用:

授权:承载123456789

也尝试过:

授权:123456789

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

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

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

最佳答案

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

Request headers bag is missing Authorization header in Symfony 2?

梅佐德的回答对我来说是最有效的。我只是将其放入Apache的虚拟主机配置文件中并重新加载Apache服务。现在可以了。无需将其作为“access_token”请求参数。获胜的授权 header 。顺便说一句,现在唯一有效的是: 授权:承载123456789

是的,Bearer 中大写 B。所有其他组合(非大写、OAuth 而不是 Bearer、只有 token 本身)都惨败。

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

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

就是这样。我真的非常希望它对某人的帮助至少是它对我的一半。

关于php - FOSOAuthServerBundle,授权 header 不起作用,但查询中的 access_token 起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37910122/

相关文章:

mysql - Doctrine2 实体与Where条件的关系

php - Twig 访问数组键空间在哪里(PHP 允许数组键上有空间)

google-app-engine - 使用 Google App Engine 的 OAuth2

rest - 401-使用 REST API Dynamics CRM 和 Azure AD 进行未经授权的身份验证

php - 使用array_search,但在找到结果后继续搜索(PHP)

php - 我应该如何使用 PHP 和 MySQL(不使用 OAuth)以安全的方式将 'Token Based Authentication' 实现到一组 Web API?

symfony - Symfony2/3中如何根据用户角色自定义表单字段?

javascript - 如何使用php将表单内容发送到数据库

javascript - 如何显示选定的日志级别?

javascript - angularjs 中的 Instagram oauth 流程