Shiro认证流程与核心组件解析
需积分: 10 129 浏览量
更新于2024-08-18
收藏 466KB PPT 举报
"认证实现-shiro个人总结ppt"
Shiro是一个强大的Java安全框架,用于处理认证、授权、会话管理和加密等安全相关的功能。在Shiro的认证实现中,核心概念是通过Realm来完成实际的用户验证。Realm可以理解为Shiro与应用程序安全数据之间的桥梁,它负责从数据源(如数据库)中获取并验证用户信息。
1. **Subject**:Subject是Shiro中的关键组件,代表了当前操作的用户。在Shiro中,Subject提供了与安全相关的所有交互接口,如登录、登出和权限检查等。
2. **SecurityManager**:作为Shiro的中心组件,SecurityManager管理着Subject和其他子组件,它对外提供了统一的安全管理服务。应用程序需要配置并启动SecurityManager来启动Shiro的安全管理。
3. **Realm**:Realm是Shiro与应用安全数据的接口,负责获取和验证用户身份以及其权限。当用户尝试登录时,Realm会从数据源中查找并验证用户信息。
Shiro的认证流程如下:
1. **开始认证**:应用程序创建一个表示用户认证信息的AuthenticationToken实例,然后调用Subject的login()方法。
2. **SecurityManager介入**:Subject实例(通常是DelegatingSubject)会将AuthenticationToken传递给已配置的SecurityManager。
3. **Authenticator工作**:SecurityManager接收令牌后,会调用内部的Authenticator进行认证。默认情况下,这会是ModularRealmAuthenticator,它会处理多个Realm的适配。
4. **多Realm认证**:如果有多个Realm,ModularRealmAuthenticator会按照配置的AuthenticationStrategy(认证策略)来决定如何组合 Realm 的认证结果。每个Realm都会被逐一调用,认证策略负责处理每个 Realm 的返回结果。
5. ** Realm验证**:每个Realm执行自己的getAuthenticationInfo(token)方法,检查令牌信息,从数据源获取用户信息,并进行匹配验证。如果验证成功,Realm返回封装了用户信息的AuthenticationInfo实例;失败则抛出AuthenticationException异常。
6. **认证结果处理**:AuthenticationStrategy将根据所有Realm的结果做出最终判断,确定认证是否成功。如果只有一个Realm,那么 Realm 直接被调用,无需认证策略。
Shiro的架构还包括其他关键组件,如:
- **Authorizer**:负责授权,即确定用户是否有权限执行特定的操作。
- **SessionManager**:管理用户的会话状态,可以集成到应用程序的会话管理体系中。
- **CacheManager**:为Shiro的其他组件提供缓存支持,提高性能。
通过这些组件的协同工作,Shiro能够提供灵活且强大的安全管理能力,适用于多种类型的应用程序。在实际使用中,开发者需要根据应用需求配置合适的Realm和策略,以实现自定义的安全控制。
2020-04-30 上传
2021-02-19 上传
2021-05-14 上传
2021-02-25 上传
2021-05-01 上传
2022-09-20 上传

速本
- 粉丝: 20
- 资源: 2万+
最新资源
- Material Design 示例:展示Android材料设计的应用
- 农产品供销服务系统设计与实现
- Java实现两个数字相加的基本代码示例
- Delphi代码生成器:模板引擎与数据库实体类
- 三菱PLC控制四台电机启动程序解析
- SSM+Vue智能停车场管理系统的实现与源码分析
- Java帮助系统代码实现与解析
- 开发台:自由职业者专用的MEAN堆栈客户端管理工具
- SSM+Vue房屋租赁系统开发实战(含源码与教程)
- Java实现最大公约数与最小公倍数算法
- 构建模块化AngularJS应用的四边形工具
- SSM+Vue抗疫医疗销售平台源码教程
- 掌握Spring Expression Language及其应用
- 20页可爱卡通手绘儿童旅游相册PPT模板
- JavaWebWidget框架:简化Web应用开发
- 深入探讨Spring Boot框架与其他组件的集成应用