- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OAuth2 与 shiro 集成
目前很多开放平台如新浪微博开放平台都在使用提供开放API 接口供开发者使用,随之带来了第三方应用要到开放平台
进行授权的问题,OAuth 就是干这个的,OAuth2 是 OAuth 协议的下一个版本,相比 OAuth1 ,OAuth2 整个授权流程更
简单安全了,但不兼容 OAuth1 ,具体可以到OAuth2 官网 /2/查看,OAuth2 协议规范可以参考
/html/rfc6749。目前有好多参考实现供选择,可以到其官网查看下载。
本文使用 Apache Oltu ,其之前的名字叫 Apache Amber ,是 Java 版的参考实现。使用文档可参考
/confluence/display/OLTU/Documentation。
OAuth 角色
资源拥有者(resource owner ):能授权访问受保护资源的一个实体,可以是一个人,那我们称之为最终用户;如新浪微
博用户 zhangsan ;
资源服务器(resource server ):存储受保护资源,客户端通过access token 请求资源,资源服务器响应受保护资源给客
户端;存储着用户 zhangsan 的微博等信息。
授权服务器(authorization server ):成功验证资源拥有者并获取授权之后,授权服务器颁发授权令牌(Access Token )
给客户端。
客户端(client ):如新浪微博客户端weico、微格等第三方应用,也可以是它自己的官方应用;其本身不存储资源,而是
资源拥有者授权通过后,使用它的授权(授权令牌)访问受保护资源,然后客户端把相应的数据展示出来/提交到服务器。 “客
户端”术语不代表任何特定实现(如应用运行在一台服务器、桌面、手机或其他设备)。
OAuth2 协议流程
1、客户端从资源拥有者那请求授权。授权请求可以直接发给资源拥有者,或间接的通过授权服务器这种中介,后者更可取。
2、客户端收到一个授权许可,代表资源服务器提供的授权。
3、客户端使用它自己的私有证书及授权许可到授权服务器验证。
1 / 18
4、如果验证成功,则下发一个访问令牌。
5、客户端使用访问令牌向资源服务器请求受保护资源。
6、资源服务器会验证访问令牌的有效性,如果成功则下发受保护资源。
更多流程的解释请参考 OAuth2 的协议规范 /html/rfc6749。
服务器端
本文把授权服务器和资源服务器整合在一起实现。
POM 依赖
此处我们使用 apache oltu oauth2 服务端实现,需要引入 authzserver (授权服务器依赖)和resourceserver (资源服务
器依赖)。
Java 代码
1. dependency
2. groupIdorg.apache.oltu.oauth2/groupId
3. artifactIdorg.apache.oltu.oauth2.authzserver/artifactId
4. version0.31 /version
5. /dependency
6. dependency
7. groupIdorg.apache.oltu.oauth2/groupId
8. artifactIdorg.apache.oltu.oauth2.resourceserver/artifactId
9. version0.31 /version
10. /dependency
其他的请参考 pom.xml。
数据字典
用户(oauth2_user)
名称 类型 长度 描述
id bigint 10 编号 主键
username varchar 100 用户名
password varchar 100 密码
salt varchar
文档评论(0)