【发布时间】:2013-06-20 04:48:39
【问题描述】:
我正在开发 spring-security-oauth2-1.0.3.RELEASE,试图设置一个 oauth 客户端来让用户通过 google 进行身份验证。
我在这方面花了一段时间,但仍然没有找到太多解释清楚的好文章。
我正在做的是像这样将 OAuth2ClientAuthenticationProcessingFilter 放入过滤器链中:
<http xmlns="http://www.springframework.org/schema/security"
use-expressions="true" pattern="/oauth.html" auto-config="true">
<sec:intercept-url pattern="/**" access="isFullyAuthenticated()" />
<custom-filter ref="oauth2ClientFilter" position="CAS_FILTER" />
<sec:custom-filter ref="googleAuthFilter" after="CAS_FILTER" />
</http>
自定义过滤器:googleAuthFilter 可以保护我的 URL。
阅读OAuth2ClientAuthenticationProcessingFilter的源码,需要参考
- 一个 OAuth2RestOperations(rest 模板),它引用一个 Oauth 服务器资源(关于 google 的信息)
- ResourceServerTokenServices(来自 Spring-security-oauth 库提供程序包)。
现在我很困惑。 Spring-security-oauth分为2部分:client和provider。
由于我只是设置一个 Oauth 客户端,为什么我需要从 Oauth 提供程序包中获得一个类的引用?
另外,我应该如何设置 ResourceServerTokenServices?现在我正在尝试使用默认实现。因为 DefaultTokenServices 再次需要引用
- 令牌存储
- ClientDetailsService
- 令牌增强器
到目前为止,我尝试了所有默认实现:
- TokenStore: InMemoryTokenStore
- ClientDetailsService:InMemoryClientDetailsService
- TokenEnhancer:TokenEnhancerChain
它似乎不起作用......
谢谢!
【问题讨论】:
-
您找到解决方案了吗?
标签: spring-security oauth-2.0 google-oauth oauth2client