
个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~
个人主页:.29.的博客
学习社区:进去逛一逛~
Shiro功能介绍
Apache Shiro 是一个功能强大且灵活的开源安全框架,可以干净地处理身份验证,授权,企业会话 Management 和加密。
Shiro功能模块:
Shiro 的目标是 Shiro 开发团队所说的“应用程序安全的四大基石”——身份验证、授权、会话管理和加密:
- 认证(Authentication): 有时被称为“登录”,这是证明用户是他们所说的人的行为。
- 授权(Authorization): 访问控制的过程,即确定“谁”有权访问“什么”。
- 会话管理(Session Management): 管理特定于用户的会话,即使在非 Web 或 EJB 应用程序中也是如此。
- 密码学(Cryptography): 使用加密算法确保数据安全,同时仍然易于使用。
在不同的应用程序环境中,还有一些其他功能来支持和加强这些问题,特别是:
Web 支持(Web Support):Shiro 的 Web 支持 API 有助于轻松保护 Web 应用程序。缓存(Caching):缓存是 Apache Shiro API 中的一线公民,可确保安全操作保持快速高效。并发(Concurrency):Apache Shiro 通过其并发功能支持多线程应用程序。测试(Testing):测试支持可帮助您编写单元和集成测试,并确保您的代码按预期受到保护。“Run As”:允许用户采用其他用户的身份(如果允许)的功能,有时在管理方案中很有用。“Remember Me”:记住用户在会话中的身份,因此他们只需要在强制登录时登录。
Shiro架构
Shiro安全框架 外部架构:
从应用程序角度来看:
-
Subject:应用代码直接交互的对象是Subject ,也就是说Shiro的对外API核心就是Subject。Subject代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫、机器人等。与Subject的所有交互都会委托给SecurityManager,Subject其实是一个门面,SecurityManager才是实际的执行者; -
SecurityManager:即安全管理器 ;所有与安全有关的操作都会与SecurityManager交互,且其管理着所有Subject。可以看出它是Shiro的核心 ,它负责与Shiro的其他组件进行交互,它相当于SpringMVC中DispatcherServlet的角色 -
Realm:Shiro从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法。也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作。可以把Realm看成DataSource。
Shiro安全框架 内部架构:
Subject:任何可以与应用交互的“用户”。Security Manager:Shiro 的核心,所有具体的交互都通过 SecurityManager 进行控制;它管理着所有 Subject、且负责进行认证、授权、会话及缓存的管理。Authenticator:负责 Subject 认证,是一个扩展点,可以自定义实现;可以使用认证策略(Authentication Strategy),即什么情况下判定用户认证通过。Authorizer:授权器、即访问控制器,用来决定主体是否有权限进行相应的操作;即控制着用户能访问应用中的哪些功能;Realm:可以有 1 个或多个 Realm,可以认为为安全实体数据源,用于获取安全实体;可以是 JDBC 实现,也可以是内存实现等等;由用户提供,所以一般在应用中都需要实现自己的 Realm;SessionManager:管理Session声明周期的组件,通过Shiro框架的这一模块,开发者可在任何应用或架构层一致地使用Session API;CacheManager:缓存控制器,来管理如用户、角色、权限等的缓存的;因为这些数据基本上很少改变,放到缓存中后可以提高访问的性能;Cryptography:密码模块,提供了一些常见的加密组件用于如密码加密/解密。
本文介绍了Apache Shiro这一开源安全框架。它能处理身份验证、授权、会话管理和加密等。其功能模块包括认证、授权等,还有Web支持、缓存等辅助功能。架构上,核心是SecurityManager,与Subject、Realm等组件交互,各组件分工明确保障应用安全。





1688

被折叠的 条评论
为什么被折叠?



