我正在使用 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/