FOSOAuthServerBundle + FOSRestBundle + CamelCase = 未进行身份验证



我一直在 Symfony 2.8 的服务器上工作,构建一个以驼峰风格返回 json 对象的 rest api,现在的问题是当我集成 OauthServer 捆绑包时,它会Invalid grant_type parameter or parameter missing"此错误,我知道发生这种情况是因为我在fos_rest配置中使用了array_normalizer: fos_rest.normalizer.camel_keys体侦听器。这是我configuration.yml的代码:

fos_rest:
#other listeners#
body_listener:
array_normalizer: fos_rest.normalizer.camel_keys
zone: 
- { path: ^/api }

这是我在security.yml中的Oauth配置:

firewalls:
oauth_token:
pattern: ^/oauth/v2/token
security: false
api:
pattern: ^/api                             
fos_oauth: true                            
stateless: true                            
anonymous: false   

我发现我不是第一个发生这种情况的人,并且添加了zone属性以缓解这种情况,但就我而言,它仅适用于^/api下的所有内容,因为当我更改模式时,它停止按预期使用侦听器,但是当我调用^/oauth/v2/token路径时,它似乎忽略了给定zone路径。

为了检索我的令牌,我正在使用下一个 POST 请求:

{
grant_type= "password" 
client_id= "clientId"
client_secret= "clientSecret"
username= "user"
password= "password"
}

我想澄清一下,如果我停用侦听器,我成功获得了令牌,但我的应用程序的其余部分停止工作,因为它到处都使用 camelCase,我知道一次替代方案是在客户端序列化我的数据,但目前它非常复杂。

我做错了什么?我不知道我错过了什么。

作为解决方法,您可以使用而不是POSTGET像这样

http://example.com/oauth/v2/token?client_id=[CLIENT_ID]&client_secret=[SECRET]&grant_type=password&username=[USERNAME]&password=[PASSWORD]

然后,您不必担心正文序列化程序。

相关内容

  • 没有找到相关文章

最新更新