- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                
                              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)