Shiro认证流程与核心组件解析
需积分: 10 26 浏览量
更新于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 上传
2017-10-08 上传
2021-02-19 上传
2021-05-14 上传
2021-02-25 上传
2021-05-01 上传
速本
- 粉丝: 20
- 资源: 2万+
最新资源
- JHU荣誉单变量微积分课程教案介绍
- Naruto爱好者必备CLI测试应用
- Android应用显示Ignaz-Taschner-Gymnasium取消课程概览
- ASP学生信息档案管理系统毕业设计及完整源码
- Java商城源码解析:酒店管理系统快速开发指南
- 构建可解析文本框:.NET 3.5中实现文本解析与验证
- Java语言打造任天堂红白机模拟器—nes4j解析
- 基于Hadoop和Hive的网络流量分析工具介绍
- Unity实现帝国象棋:从游戏到复刻
- WordPress文档嵌入插件:无需浏览器插件即可上传和显示文档
- Android开源项目精选:优秀项目篇
- 黑色设计商务酷站模板 - 网站构建新选择
- Rollup插件去除JS文件横幅:横扫许可证头
- AngularDart中Hammock服务的使用与REST API集成
- 开源AVR编程器:高效、低成本的微控制器编程解决方案
- Anya Keller 图片组合的开发部署记录