grails-spring-security-oauth2-provider ClientCredentials filter no processing /oauth/token
Posted
技术标签:
【中文标题】grails-spring-security-oauth2-provider ClientCredentials filter no processing /oauth/token【英文标题】: 【发布时间】:2013-12-31 05:33:51 【问题描述】:尝试在 grails 2.2.4 中使用 grails-spring-security-oauth2-provider。授权流程正在工作,但是当重新提交代码以获取令牌(通过 /myapp/oauth/token)时,我期望 ClientCredentialsTokenEndpointFilter 对 POST 请求进行身份验证,但它没有。我在过滤器链中看到它。
另外,它会使用我在 Config.groovy 中定义的客户端的 id/secret 吗?似乎它会先尝试我的 DaoAuthenticationProvidor 并失败并直接进入异常过滤器(并重定向到登录端点)。
DEBUG web.FilterChainProxy - /oauth/token at position 5 of 11 in additional filter chain; firing Filter: 'RequestHolderAuthenticationFilter'
DEBUG web.FilterChainProxy - /oauth/token at position 6 of 11 in additional filter chain; firing Filter: 'ClientCredentialsTokenEndpointFilter'
DEBUG web.FilterChainProxy - /oauth/token at position 7 of 11 in additional filter chain; firing Filter: 'SecurityContextHolderAwareRequestFilter'
我的配置:
oauthProvider
clients = [
[
clientId:"test",
clientSecret:"testSecret",
authorizedGrantTypes:["authorization_code"],
registeredRedirectUri:["http://myapp/other/"]
]
]
providerNames = [
'samlAuthenticationProvider',
'daoAuthenticationProvider',
'anonymousAuthenticationProvider',
'rememberMeAuthenticationProvider',
'clientCredentialsAuthenticationProvider']
...
'/oauth/authorize.dispatch':['IS_AUTHENTICATED_REMEMBERED'],
'/oauth/token.dispatch':['IS_AUTHENTICATED_REMEMBERED'],
发布的网址:
http://localhost:8080/myapp/oauth/token
grant_type=authorization_code
client_id=test
client_secret=testSecret
code=<the code I got from authorization>
redirect_uri=http:localhost:8080//myapp/other"
【问题讨论】:
提供者名称的顺序是否正确?顺序很重要,根据文档 clientCredentialsAuthenticationProvider 必须是第一个。 【参考方案1】:所有请求中的重定向 uri 是否相同?
【讨论】:
以上是关于grails-spring-security-oauth2-provider ClientCredentials filter no processing /oauth/token的主要内容,如果未能解决你的问题,请参考以下文章