大家好,我是IT修真院武汉分院第十五期学员,一枚正直纯洁善良的JAVA程序员。
今天给大家分享一下,修真院官网JAVA任务十的一个知识点:shiro
1.背景介绍
什么是Apache 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公司提供的。
什么是权限管理?
权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少。
权限管理体系几乎可以出现在任何系统里面,只要项目存在有用户和密码的相关概念。
很多人常将“用户身份认证”、“密码加密”、“系统管理”等概念与权限管理概念混淆。
权限管理就是管理用户对于资源的操作。
本 CRM 系统的权限(也称作资源)是基于角色操作权限来实现的,即RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。
简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。
在这种模型中,用户与角色之间,角色与权限之间都是多对多的关系,为了实现表之间多对多的关系,必须将一个多对多的关系通过一个中间表分为两个一对多的关系。
因此引入中间表,用户角色表和角色权限表。
可以用 Apache Shiro做下面的事情
验证用户
对用户执行访问控制,如:1、判断用户是否分配了一定的安全角色。2、判断用户是否被授予完成某个操作的权限
判断用户是否拥有角色admin
判断用户是否拥有访问的权限
在任何环境下使用 Session API
可以使用多个用户数据源。例如一个是oracle用户库,另外一个是mysql用户库
单点登录(SSO)功能
“Remember Me”服务 ,类似购物车的功能,shiro官方建议开启
2.知识剖析
Shiro 依赖的 API
Authentication —— 认证,用户身份识别,常被称为用户“登录”,who are you?
Authorization —— 授权,访问控制过程,决定“谁”访问“什么”,who can do what?
Session Management —— 会话管理,用户session管理器,用户相关的时间敏感的状态
Cryptography —— 密码加密,把JDK中复杂的密码加密方式进行封装,保护或隐藏数据防止被偷窥
还有其他的功能来支持和加强这些不同应用环境下安全领域的关注点。特别是对以下的功能支持:
Web支持:Shiro 提供的 web 支持 api ,可以很轻松的保护 web 应用程序的安全。
并发:Apache Shiro 支持多线程应用程序的并发特性。
测试:支持单元测试和集成测试,确保代码和预想的一样安全。
“Run As”:这个功能允许用户假设另一个用户的身份(在许可的前提下)。
“Remember Me”:跨 session 记录用户的身份,只有在强制需要时才需要登录。
3.常见的问题
如何与springboot集成?
集成shiro大概分这么一个步骤:
4.解决办法
集成shiro大概分这么一个步骤:
(a) pom.xml中添加Shiro依赖;
(b) 注入Shiro Factory和SecurityManager。
(c) 身份认证
(d) 权限控制
5.编码实战
6.扩展思考
7.参考文献
spring boot shiro权限管理
http://412887952-qq-com.iteye.com/blog/2299777
Realm 详解
http://jinnianshilongnian.iteye.com/blog/2022468
鸣谢
感谢观看,如有出错,恳请指正
BY : 方广辉
1.Shiro的整个架构是怎么样的?
2.Shiro的rememberMe适用场景?
在数据访问要求不严格的场景,比如微博、论坛之类的,用户不用等了即可访问。
3. 什么是RABC?
基于角色的权限访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收。角色与角色的关系可以建立起来以囊括更广泛的客观情况。