FOSOAuthServerBundle,授权 header 不起作用,但查询中的 access_token 有效
FOSOAuthServerBundle, Authorization header doesn't work but access_token in query works
我正在使用 authorization_code
授权类型。我已经创建了一个客户端 auth_code,然后创建了访问和刷新令牌,一切都成功了。
现在我尝试使用 access_token ,问题来了。如果我把它作为一个 request/query 参数 access_token=123456789
,它工作得很好,我得到了请求的资源。
但我读到,出于安全原因,将其嵌入授权 header 实际上更好。我正在尝试这个但不起作用:
Authorization: Bearer 123456789
也尝试过:
Authorization: 123456789
但没有任何效果。我得到的是:
{
"error": "access_denied",
"error_description": "OAuth2 authentication required"
}
有什么想法吗?如果我在服务器和客户端都使用 SSL,我可以安全地使用参数而不是 headers 吗?
嗯,我自己找到了解决办法。这其实也算是一道"duplicated"题,只是我到现在才知道。试图追踪错误,我发现授权 header 在 Symfony 分析器中完全缺失(幸运的是,Symfony 在响应中发送与每个请求相关的分析器 URL)。所以我搜索了 "symfony missing authorization header"(或类似的东西,不记得了)并找到了这个:
Request headers bag is missing Authorization header in Symfony 2?
mezod 的回答对我来说是最有效的。我只是把它放在 Apache 的虚拟主机配置文件中,然后重新加载 Apache 服务。现在可以了。无需将其作为 'access_token' 请求参数。授权header为胜利。顺便说一句,现在唯一有用的是:
Authorization: Bearer 123456789
是的,Bearer 中的大写 B。所有其他组合(non-capital,OAuth 而不是 Bearer,只有令牌本身)都惨遭失败。
以防有人无法访问 link,将其放入您的虚拟主机配置文件中(我自己还没有在 .htaccess 中尝试过):
RewriteEngine On
RewriteCond %{HTTP:Authorization} .+
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
就是这样。我真的真的希望它对某人的帮助至少是它为我所做的一半。
我正在使用 authorization_code
授权类型。我已经创建了一个客户端 auth_code,然后创建了访问和刷新令牌,一切都成功了。
现在我尝试使用 access_token ,问题来了。如果我把它作为一个 request/query 参数 access_token=123456789
,它工作得很好,我得到了请求的资源。
但我读到,出于安全原因,将其嵌入授权 header 实际上更好。我正在尝试这个但不起作用:
Authorization: Bearer 123456789
也尝试过:
Authorization: 123456789
但没有任何效果。我得到的是:
{
"error": "access_denied",
"error_description": "OAuth2 authentication required"
}
有什么想法吗?如果我在服务器和客户端都使用 SSL,我可以安全地使用参数而不是 headers 吗?
嗯,我自己找到了解决办法。这其实也算是一道"duplicated"题,只是我到现在才知道。试图追踪错误,我发现授权 header 在 Symfony 分析器中完全缺失(幸运的是,Symfony 在响应中发送与每个请求相关的分析器 URL)。所以我搜索了 "symfony missing authorization header"(或类似的东西,不记得了)并找到了这个:
Request headers bag is missing Authorization header in Symfony 2?
mezod 的回答对我来说是最有效的。我只是把它放在 Apache 的虚拟主机配置文件中,然后重新加载 Apache 服务。现在可以了。无需将其作为 'access_token' 请求参数。授权header为胜利。顺便说一句,现在唯一有用的是:
Authorization: Bearer 123456789
是的,Bearer 中的大写 B。所有其他组合(non-capital,OAuth 而不是 Bearer,只有令牌本身)都惨遭失败。
以防有人无法访问 link,将其放入您的虚拟主机配置文件中(我自己还没有在 .htaccess 中尝试过):
RewriteEngine On
RewriteCond %{HTTP:Authorization} .+
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
就是这样。我真的真的希望它对某人的帮助至少是它为我所做的一半。