这里是修真院后端小课堂,每篇分享文从
【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】
八个方面深度解析后端知识/技能,本篇分享的是:
【shiro框架】
【修真院Java小课堂】shiro框架
开场语:
大家好,我是IT修真院北京分院第34期的学员王庸之,一枚正直纯洁善良的Java程序员,今天给大家分享一下,修真院官网Java任务十中的知识点——shiro框架。
一、背景介绍:
1、什么是权限管理?
只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。
对权限的管理又分为两大类别:用户认证和用户授权。
2、什么是用户认证?
用户认证,用户去访问系统,系统要验证用户身份的合法性。
最常用的用户身份验证的方法:1、用户名密码方式、2、指纹打卡机、3、基于证书验证方法等。。。系统验证用户身份合法,用户方可访问系统的资源。
3、用户认证的流程
判断该资源能否不认证就能访问【登陆页面、首页】
如果该资源需要认证后才能访问,那么判断该访问者是否认证了
如果还没有认证,那么需要返回到【登陆页面】进行认证
认证通过后才能访问资源
4、什么是用户授权?
用户授权,简单理解为访问控制,在用户认证通过后,系统对用户访问资源进行控制,用户具有资源的访问权限方可访问。
5、用户授权的流程
用户认证之后才会有用户授权
用户访问资源,系统判断该用户是否有权限去操作该资源
如果该用户有权限才能够访问,如果没有权限就拒绝访问
二、知识剖析:
1、什么是shiro?
Apache Shiro(发音为shee-roh,日语堡垒(Castle)的意思)是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。相较于Spring Security来说较为简单,易于上手。Apache Shiro有三个核心的概念Subject,SecurityManager和Realms。
2、subject
Subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。
3、SecurityManager
它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
4、Realm
Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。
Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和(或)授权。配置多个Realm是可以的,但是至少需要一个。
5、Shiro其他主要组件:Authenticator
认证就是核实用户身份的过程。这个过程的常见例子是大家都熟悉的“用户/密码”组合。多数用户在登录软件系统时,通常提供自己的用户名(当事人)和支持他们的密码(证书)。如果存储在系统中的密码(或密码表示)与用户提供的匹配,他们就被认为通过认证。
6、Shiro其他主要组件:Authorizer
授权实质上就是访问控制 - 控制用户能够访问应用中的哪些内容,比如资源、Web页面等等。
7、Shiro其他主要组件:SessionManager
在安全框架领域,Apache Shiro提供了一些独特的东西:可在任何应用或架构层一致地使用Session API。即,Shiro为任何应用提供了一个会话编程范式 - 从小型后台独立应用到大型集群Web应用。这意味着,那些希望使用会话的应用开发者,不必被迫使用Servlet或EJB容器了。或者,如果正在使用这些容器,开发者现在也可以选择使用在任何层统一一致的会话API,取代Servlet或EJB机制。
8、Shiro其他主要组件:CacheManager
对Shiro的其他组件提供缓存支持。
三、编码实战
四、常见问题:
1.什么是权限的粗粒度和细粒度管理?
2.如何实现粗粒度和细粒度管理?
3.除了shiro还有哪些其他安全管理框架?
五、解决方案:
Q1:什么是权限的粗粒度和细粒度管理?
A1:粗粒度管理一般只模块层面的管理。
细粒度权限管理就是数据级别的权限管理。
Q2:如何实现粗粒度和细粒度管理?
A2:粗粒度权限管理比较容易将权限管理的代码抽取出来在系统架构级别统一处理。比如:通过springmvc的拦截器实现授权。
细粒度权限管理在数据级别是没有共性可言,针对细粒度权限管理就是系统业务逻辑的一部分,在业务层去处理相对比较简单。
Q3:除了shiro还有哪些其他安全管理框架?
A3:Spring Security
Shiro比Spring更容易使用,实现和最重要的理解 Spring Security更加知名的唯一原因是因为品牌名称 “Spring”以简单而闻名,但讽刺的是很多人发现安装Spring Security很难 然而,Spring Security却有更好的社区支持 Apache Shiro在Spring Security处理密码学方面有一个额外的模块 Spring-security 对spring 结合较好,如果项目用的springmvc ,使用起来很方便。但是如果项目中没有用到spring,那就不要考虑它了。 Shiro 功能强大、且 简单、灵活。是Apache 下的项目比较可靠,且不跟任何的框架或者容器绑定,可以独立运行
六、结束语:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
更多内容,可以加入IT交流群565734203与大家一起讨论交流
这里是技能树·IT修真院:,初学者转行到互联网的聚集地
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。