Shiro框架核心组件详解:Subject、SecurityManager与Realms
需积分: 31 43 浏览量
更新于2024-08-18
收藏 468KB PPT 举报
"本文将详细介绍Apache Shiro的核心组件和它们在安全管理中的作用,以及Shiro的认证过程。"
Apache Shiro是一个强大且易用的Java安全框架,它提供了身份验证(Authentication)、授权(Authorization)以及会话管理(Session Management)等功能,适用于Web应用和独立的Java应用。Shiro的主要目标是简化应用的安全实现,使得开发者可以专注于业务逻辑而不是安全细节。
**核心组件**
1. **Subject**: Subject代表了“当前操作用户”,它包含了与安全相关的所有信息,如身份信息、权限等。Subject接口提供了认证和授权的基本操作,如login()、logout()、isPermitted()等。
2. **SecurityManager**: SecurityManager是Shiro框架的核心,它扮演着门面(Facade)的角色,管理和协调Shiro的各个组件。SecurityManager负责初始化并管理Subject,同时提供认证、授权、会话管理和缓存管理等服务。
3. **Realms**: Realm是Shiro与应用安全数据之间的桥梁,它负责从数据库或其他数据源获取用户的认证和授权信息。在认证过程中,Realm验证用户凭证(如用户名和密码),在授权过程中, Realm提供用户的权限信息。
**其他主要组件**
- **Authenticator**: 认证器,负责核实用户的身份。它接收AuthenticationToken(如UsernamePasswordToken)并调用 Realm 进行认证。
- **Authorizer**: 授权器,处理访问控制,确定用户是否具有执行特定操作的权限。
- **SessionManager**: 管理用户会话,包括创建、更新、删除会话,以及会话超时和分布式会话的支持。
- **CacheManager**: 提供缓存管理,优化性能,减少对数据库或数据源的频繁查询。
**Shiro认证过程**
1. 应用程序创建一个表示用户认证信息的AuthenticationToken实例,然后调用Subject的login()方法。
2. Subject实例(通常是DelegatingSubject)将调用SecurityManager的login()方法,将认证工作交给SecurityManager。
3. SecurityManager使用内部的Authenticator,通常是ModularRealmAuthenticator,该认证器会遍历配置的多个Realm进行认证。
4. 如果配置了多个Realm,ModularRealmAuthenticator会根据AuthenticationStrategy(认证策略)来决定如何处理每个Realm的认证结果。
5. Realm被逐一调用,AuthenticationStrategy将整合每个Realm的响应,以确定最终的认证结果。如果只有一个Realm,就直接使用该Realm进行认证。
Shiro的这种设计使得我们可以灵活地配置不同的Realm来处理不同类型的凭证,如数据库、LDAP、Active Directory等,同时通过认证策略来实现多种认证逻辑,如优先、并行或复合认证。这样的灵活性使得Shiro能够适应各种复杂的应用场景。
256 浏览量
324 浏览量
116 浏览量
110 浏览量
2022-09-20 上传
317 浏览量
2021-05-14 上传
2022-04-22 上传
2021-03-30 上传
VayneYin
- 粉丝: 24
- 资源: 2万+
最新资源
- 基于ADO数据访问技术的等边角钢参数化设计.doc
- 如何实现无刷新的DropdownList联动效果
- 网络工程投标书样本2009
- VS2005(c#)项目调试问题解决方案集锦(五)
- VS2005(c#)项目调试问题解决方案集锦(四)
- 《python核心笔记》
- H.264_中英文对照翻译(AVS264 V1.0)
- java cook book
- PHP在Web开发领域的优势
- Spring 入门书籍
- 《微内核工作流引擎体系结构与部分解决方案参考》
- PHP初学者头疼问题总结
- ArcObjects+GIS应用开发——基于C#.NET
- 工作流引擎核心调度算法与PetriNet_胡长城.pdf
- 《工作流模型分析》胡长城
- c8051f020文档资料