Spring Security OAuth学习笔记(一)(原创)
Spring Security OAuth项目是Spring对OAuth协议实现的一个开源项目。提供 OAuth providers和OAuth consumers的实现。以下是个人的学习笔记仅供参考。
OAuth协议相关的参考资料:
http://wenku.baidu.com/view/b37ed7260722192e4536f66e.html(Oauth2.0)
http://netment.iteye.com/blog/945402
Spring Security OAuth相关的参考资料:
http://static.springsource.org/spring-security/oauth/(官网)
http://www.springsource.org/spring-security-oauth(官网)
https://github.com/SpringSource/spring-security-oauth/wiki/oauth2(用户指南)
https://github.com/SpringSource/spring-security-oauth/(下载)
第三方平台实现的参考资料:
http://open.weibo.com/wiki/Oauth2(新浪)
http://wiki.dev.renren.com/wiki/Authentication(人人)
Spring Security OAuth配置
关于OAuth for Spring Security 的配置可以参考官方源码包中提供的 OAuth1.0和OAuth2.0的例子。
当前我所使用的版本:SpringSource-spring-security-oauth-1.0.0.M5-47-g324fb78.zip
可以根据我提供的参考资料链接地址下载相关版本。
Spring Security OAuth的配置详解可以参考官网给出的用户指南。
服务端配置(Provider)
一、过滤链配置
客户端(consumer)获取访问票据(Access Token)时会验证客户端的合法性。
认证管理器配置:clientAuthenticationManager
{@link ClientDetailsUserDetailsService}。
该过滤链会拦截所有资源,最主要过滤的有两部分资源:
1、授权码(Authorization Code): /oauth/authorize
2、开放的服务接口(Rest API)
此处与官网源码提供的例子有不同之处,加入Jasig CAS作为认证入口,可以忽略不计。
二、认证管理器配置
clientAuthenticationManager:验证客户端(consumer)的合法性。
authenticationManager:验证最终用户(End-User)的合法性。
三、Tokens管理
@{link AuthorizationServerTokenServices}:接口定义了一些对Tokens(access token) 的管理方法(创建、刷新).
@{link RandomValueTokenServices}: 采用随机生成的方式;
@{link InMemoryTokenStore}: 采用基于内存的方式存储.
四、服务端的验证与授权流程(方式)
Spring Security OAuth实现了OAuth协议规范中定义的以下几种方式。
Authentication Code,又称Web Server Flow,适用于所有有Server端配合的应用和无Server端应用 Implicit Grant,又称User-Agent Flow,适用于所有无Server端配合的应用(桌面客户端需要内嵌浏览器) Client Credentials,即采用应用公钥、密钥获取Access Token,适用于任何类型应用。 Refresh Token,即令牌刷新方式,适用于所有有Server端配合的应用 用户名密码流程(协议中Resource Owner Password Credentials Flow)。此流程适用于无法使用浏览器发起服务端和客户端验流程的应用。 |
五、配置服务端受保护的资源
六、Clients管理
预先注册的客户端(consumer)相关配置信息,然后颁发给每一个客户端。
客户端配置(Consumer)
可以参考官方用户指南:
https://github.com/SpringSource/spring-security-oauth/wiki/oauth2(用户指南)