Shiro安全框架的主要组件及认证过程简介
作者:爱吃 香菜
这篇文章主要介绍了Shiro安全框架的主要组件及认证过程简介,Shiro 是一个强大灵活的开源安全框架,可以完全处理身份验证、授权、加密和会话管理,本文就来介绍一下此框架的核心组成,需要的朋友可以参考下
什么是Shiro
Shiro 是一个强大灵活的开源安全框架,可以完全处理身份验证、授权、加密和会话管理
Shiro的核心功能包括:
- 身份验证(Authentication):验证用户的身份,确保用户是合法的。
- 授权(Authorization):控制用户对系统资源的访问权限,限制用户只能访问其被授权的部分。
- 会话管理(Session Management):管理用户会话,跟踪用户的登录状态和活动,并提供会话的持久化支持。
- 密码加密(Cryptography):提供密码加密和解密的支持,确保用户的密码在存储和传输过程中的安全性。
- Web支持:提供与Web应用程序集成的支持,包括集成主流Web框架(如Spring、Struts)和处理Web请求的过滤器等。
Shiro主要组件及相互作用:
- Subject(主体):
- Subject 表示当前正在与应用程序交互的用户。可以是一个人、设备或其他系统实体。
- Subject 封装了用户的身份和相关的安全操作,如登录、注销、权限检查等。
- SecurityManager(安全管理器):
- SecurityManager 是 Shiro 的核心组件,负责协调和管理所有的安全操作。
- SecurityManager 管理一个或多个 Realms,用于进行身份验证和授权。
- Realm(域):
- Realm 是连接 Shiro 和安全数据源(如数据库、LDAP 等)的桥梁。
- Realm 负责从数据源中获取用户的身份和权限信息,并提供给 SecurityManager 进行验证和授权操作。
- Authenticator(身份验证器):
- Authenticator 负责对用户进行身份验证。
- Authenticator 使用 Realm 获取用户的身份信息,并将其与用户提供的凭据进行比较,以确定用户是否合法。
- Authorizer(授权器):
- Authorizer 负责对用户进行授权,确定用户是否有权访问特定资源。
- Authorizer 使用 Realm 获取用户的角色和权限信息,并与应用程序定义的角色和权限进行匹配,以决定用户是否被授权访问资源。
- SessionManager(会话管理器):
- SessionManager 负责管理用户的会话。
- SessionManager 创建、维护和关闭用户会话,并提供会话的持久化支持。
- SessionDAO(会话数据访问对象):
- SessionDAO 是用于会话数据的读取和存储的接口。
- SessionDAO 与数据库或其他存储介质交互,将会话数据持久化或从持久化存储中读取会话数据。
这些组件相互协作,形成了 Shiro 的安全框架。Subject 通过 SecurityManager 进行身份验证和授权操作,SecurityManager 使用 Realm 获取用户的身份和权限信息。而我们需要实现Realms的Authentication 和 Authorization。Authenticator 负责身份验证,Authorizer 负责授权,SessionManager 负责会话管理。SessionDAO 则提供会话数据的读取和存储支持。通过这
种相互作用,Shiro 提供了完善的安全功能,保护应用程序的安全性。
Shiro 认证过程:
- 用户提交身份信息:用户在应用程序的登录页面输入用户名和密码,并提交身份信息。
- Subject 提交身份信息:应用程序接收到用户提交的身份信息后,将其封装为 Subject 对象。
- SecurityManager 开始认证:SecurityManager 是 Shiro 的核心组件,负责协调和管理所有的安全操作。它接收到 Subject 提交的身份信息后,开始进行身份验证。
- SecurityManager 调用 Authenticator 进行身份验证:SecurityManager 会调用配置好的 Authenticator 进行身份验证。
- Authenticator 获取身份信息:Authenticator 使用 Realm(可能是单个 Realm 或多个 Realm 的组合)从数据源中获取用户的身份信息。
- Realm 获取用户身份信息:Realm 是连接 Shiro 和安全数据源的桥梁。它根据配置的方式(如数据库、LDAP 等)获取用户的身份信息。
- Authenticator 进行身份匹配:Authenticator 将用户提交的身份信息和 Realm 获取到的用户身份信息进行匹配,以确定用户是否合法。
- 认证结果返回给 SecurityManager:Authenticator 将认证结果(通过或失败)返回给 SecurityManager。
- SecurityManager 处理认证结果:SecurityManager 根据认证结果,如果认证成功,则将用户标记为已认证状态,并将用户的身份信息存储在 Subject 中供以后使用。如果认证失败,则抛出相应的异常。
- 认证结果返回给应用程序:SecurityManager 将认证结果返回给应用程序,应用程序可以根据认证结果决定如何处理。
Shiro 授权过程:
- 用户发起访问请求: 用户在应用程序中发起对某个资源的访问请求,例如访问一个特定的 URL 或执行某个操作。
- Subject 发起授权请求: Subject 对象封装了当前用户的身份信息和相关的安全操作。当用户发起访问请求时,Subject 对象会将授权请求发送给 SecurityManager。
- SecurityManager 开始授权: SecurityManager 是 Shiro 的核心组件,负责协调和管理所有的安全操作。它接收到 Subject 的授权请求后,开始进行授权处理。
- SecurityManager 调用 Authorizer 进行授权: SecurityManager 会调用配置好的 Authorizer 进行授权操作。
- Authorizer 获取用户角色和权限信息: Authorizer 使用 Realm(可能是单个 Realm 或多个 Realm 的组合)从数据源中获取当前用户的角色和权限信息。
- Authorizer 进行角色和权限匹配: Authorizer 将用户的角色和权限信息与应用程序定义的角色和权限进行匹配,以确定用户是否有权访问请求的资源。
- 授权结果返回给 SecurityManager: Authorizer 将授权结果(允许访问或拒绝访问)返回给 SecurityManager。
- SecurityManager 处理授权结果: SecurityManager 根据授权结果,如果授权成功,则允许用户访问请求的资源。如果授权失败,则抛出相应的异常或采取其他处理措施。
- 授权结果返回给应用程序: SecurityManager 将授权结果返回给应用程序,应用程序可以根据授权结果决定如何处理用户的访问请求。
到此这篇关于Shiro安全框架的主要组件及认证过程简介的文章就介绍到这了,更多相关Shiro安全框架内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!