家好,我是IT修真院成都分院第7期的JAVA学员龚剑飞,一枚正直纯洁善良的java程序员。
今天给大家分享一下,一个比较好用的JAVA安全验证框架————Shiro。
1.背景介绍
先介绍下背景
Shiro是什么?
Apache Shiro(读作“sheeroh”,即日语“城”)是一个开源安全框架,提供身份验证、授权、密码和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
城:じょう、しろ
Shiro的产生背景:Shiro的前身是JSecurity。
2004年,Les Hazlewood和Jeremy Haile创办了Jsecurity。当时他们找不到适用于应用程序级别的合适Java安全框架,同时又对JAAS非常失望。2010年9月22日,Shrio成为Apache软件基金会的顶级项目(TLP)。
Java认证和授权服务(Java Authentication and Authorization Service,简称JAAS)是一个Java以用户为中心的安全框架,作为Java以代码为中心的安全的补充。自Java运行环境(JRE) 1.4起,JAAS就被集成到JRE,而之前是作为一个扩展库由Sun公司提供的。
2.知识剖析
Shiro的几个术语
Subject
SecurityManager
Relam
Role&Permission
Subject
Subject:主体,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等;即一个抽象概念;所有Subject都绑定到SecurityManager,与Subject的所有交互都会委托给SecurityManager;可以把Subject认为是一个门面;SecurityManager才是实际的执行者;
SecurityManager
安全管理器;即所有与安全有关的操作都会与SecurityManager交互;且它管理着所有Subject;可以看出它是Shiro的核心,它负责与后边介绍的其他组件进行交互,如果学习过SpringMVC,你可以把它看成DispatcherServlet前端控制器;
Relam
Realm:域,Shiro从从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource,即安全数据源。
Role&Permission
角色与权限:一个角色可以对应多个权限。Shiro验证有两种方式。
3.常见问题
①、使用Shiro的好处是什么?
②、如何使用Shiro?
4.解决方案
①、Shiro可以使项目的验证架构更加完善,扩展性强
②、别说话,看我操作
5.编码实战(略)
6.扩展思考
提问:Shiro比拦截器好在什么地方?
答:shiro的架构更健硕
提问:Shiro是如何进行身份验证的?
答:Shiro的Relam里面有个钩子函数,当需要验证时,会回调那个钩子函数,通过与Relam里面存储的内容对比来验证
提问:Shiro和SpringSecurity有什么区别
答:我只知道SpringSecurity的功能更多,配置也要复杂些,而且需要Spring-core至少在4.1.1以上
SpringSecurity,是Spring框架的一个分支,主要也是解决验证登录权限问题,可是需要Spring4.1以上的版本,无奈我们项目用的框架只支持低版本3.1.1.Release
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
技能树.IT修真院“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~我的邀请码:13869506,或者你可以直接点击此链接:http://www.jnshu.com/login/1/13869506
PPT地址:PPT
视频: