Shiro的主要功能和构成

简介

Apache Shiro是Java的一个安全(权限)框架

Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境

Shiro可以完成:认证、授权、加密、会话管理、与Web集成、缓存等

功能简介

基本功能如下图所示:


shiro的主要功能.png

Authentication:身份认证/登录,验证用户是不是拥有相应的身份

Authorization:授权,及权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色.或者细粒度的验证某个用户对某个资源是否具有某个权限

Session Manager:会话管理,即用户登陆后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的

Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储

Web Support:Web支持,可以非常容易的集成到Web环境

Caching:缓存

Concurrency:shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去

Testing:提供测试支持

Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问

Remember Me:记住我

Shiro不会去维护用户、维护权限;这些需要我们自己去设计/提供;然后通过相应的接口注入给Shiro

Shiro架构(Shiro外部来看)

从外部有来看Shiro,即从应用程序角度的来观察如何使用Shiro完成工作:

shiro工作流程图.png

Subject: 应用代码直接交互的对象是Subject,也就是说Shiro的对外API核心就是Subject.Subject代表了当前"用户",这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫、机器人等;与Subject的所有交互都会委托给SecurityManager;Subject其实是一个门面,SecurityManager才是实际的执行者

SecurityManager:安全管理器;即所有与安全有关的操作都会与SecurityManager交互;且其管理着所有Subject;可以看出它是Shiro的核心,它负责与Shiro的其他组件进行交互,它相当于SpringMVC中DispatcherServlet的角色

Realm:Shiro从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,name它需要从Realm获取响应的用户进行比较以确定用户身份是否合法;也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;也可以把Realm看成DataSource

Shiro架构(Shiro内部来看)

shiro内部架构图.png

Subject:任何可以与应用交互的"用户"

SecurityManager:相当与SpringMVC中的DispatcherServlet;是Shiro的心脏;所有具体的交互都通过SecurityManager进行控制;它管理着所有Subject、且负责进行认证、授权、会话及缓存的管理

Authenticator: 负责Subject认证,是一个扩展点,可以自定义实现;可以使用认证策略(Authentication Strategy),即什么情况下算用户认证通过了

Authorizer: 授权器、即访问控制器,用来决定主题是否有权限进行相应的操作;即控制着用户能访问应用中的哪些功能

Realm:可以有一个或多个Realm,可以认为是安全实体数据源,即用户获取安全实体的;可以是JDBC实现,也可以是内存实现等等;由用户提供;所以一般在应用中都需要实现自己的Realm

SessionManager: 管理Session生命周期的组件;而Shiro并不仅仅可以用在Web环境,也可以用在如普通的JavaSE环境

CacheManager: 缓存控制器,来管理如用户、角色、权限等的缓存的;因为这些数据基本上很少改变,放在缓存中可以提供访问的性能

Cryptography: 密码模块,Shiro提高了一些常见的加密组件用于如密码加密/解密

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 说明:本文很多观点和内容来自互联网以及各种资料,如果侵犯了您的权益,请及时联系我,我会删除相关内容。 权限管理 基...
    寇寇寇先森阅读 12,230评论 8 76
  • title: 初识Shirotags: shirocategories: shiro 若图片无法显示,请前往我的博...
    codingXiaxw阅读 3,638评论 1 0
  • 昨天已经说了,现实篇的第四个原则,未知永远存在。今天,继续分享第五个原则,现状无法马上摆脱。 有一个奇...
    chloemin阅读 4,055评论 2 17
  • 有种莫明的渴望 旅行于你的世界 曾经的幻想 已然在行囊的陪伴下 在你版图上穿越 目睹你脆弱的心灵 触摸你敏锐的神经...
    诗语远方的温度阅读 1,805评论 0 1
  • 不少MM会受到封闭性粉刺的困扰 封闭性粉刺我们也称之为白头粉刺 导致封闭性粉刺出现的原因 也是多种多样的 不同位置...
    苏醒护肤老师阅读 2,444评论 0 0

友情链接更多精彩内容