问答题339/1053Shiro有哪些组件?

难度:
2021-11-02 创建

参考答案:

Apache Shiro 是一个强大且灵活的安全框架,提供身份验证、授权、加密和会话管理等功能。Shiro 的核心组件帮助开发人员轻松实现安全管理。

以下是 Shiro 的主要组件:

1. SecurityManager(安全管理器)

  • 概述:SecurityManager 是 Shiro 的核心组件,负责管理和协调所有的安全操作。它是一个中央的控制单元,用来管理认证、授权、会话管理等。所有的安全请求都会通过 SecurityManager 进行处理。
  • 作用
    • 处理身份验证(Authentication)和授权(Authorization)。
    • 管理用户会话。
    • 管理安全数据的加密。
    • 提供用于认证和授权的各种策略。

2. Subject(主体)

  • 概述:Subject 表示正在与应用程序交互的用户或系统实体。它是 Shiro 中的核心概念,代表了一个用户(或者客户端)与系统之间的交互。
  • 作用
    • 存储有关当前用户的信息,如权限、会话、身份验证状态等。
    • 提供执行认证、授权、会话管理和访问控制的接口。
  • Subject 通常与用户相关联,它的身份可以是通过 Authentication 获得的。

3. Realm(领域)

  • 概述:Realm 是 Shiro 用来访问底层数据源(如数据库、LDAP 等)的组件,负责从数据源中获取用户、角色和权限等信息。Realm 在进行身份验证和授权时,提供必要的数据支持。
  • 作用
    • 在身份验证过程中,Realm 会根据提供的凭证(如用户名和密码)查找对应的用户信息,并验证其合法性。
    • 在授权过程中,Realm 会检查用户是否具有访问特定资源的权限。
  • 常见实现JdbcRealm(通过 JDBC 访问数据库)、LDAPRealm(通过 LDAP 访问用户数据)等。

4. Filter(过滤器)

  • 概述:Shiro 提供了一系列的过滤器,用来对用户请求进行拦截和处理,控制访问权限。这些过滤器通常在 Web 应用中用于保护某些 URL 或资源,避免未经授权的访问。
  • 作用
    • 进行 URL 路径的安全拦截。
    • 实现常见的安全控制,如身份验证、授权、会话管理等。
  • 常用过滤器
    • LoginFilter:用于处理登录请求,验证用户身份。
    • RolesAuthorizationFilter:根据角色控制用户的访问权限。
    • PermissionsAuthorizationFilter:根据用户的权限控制访问。
    • LogoutFilter:用于退出用户会话。

5. Session(会话)

  • 概述:Shiro 提供的会话管理器负责管理用户会话,能够处理多用户和分布式系统中的会话信息。
  • 作用
    • 管理用户的会话生命周期,存储用户的会话信息。
    • 支持 session 数据的持久化。
    • 支持用户信息跨多个请求传递(如用户的认证状态、权限等)。

6. Cache(缓存)

  • 概述:Shiro 提供了缓存的支持,用于存储用户的认证信息、授权信息和会话数据等。通过缓存,可以提高系统的性能,减少频繁的数据库查询。
  • 作用
    • 提高认证和授权过程的性能。
    • 存储一些不常变动的数据,如权限信息。
  • Shiro 提供了默认的缓存实现(如内存缓存)和支持外部缓存的扩展(如 Ehcache、Redis 等)。

7. Authentication(认证)

  • 概述:Shiro 提供了身份验证的组件,用于验证用户身份是否合法。认证是通过提供的凭证(如用户名和密码)进行的。
  • 作用
    • 验证用户身份是否合法。
    • 确保系统只允许授权的用户访问系统资源。

8. Authorization(授权)

  • 概述:Shiro 提供授权机制,用于管理用户的访问控制,确定用户是否有权限访问特定资源或执行某些操作。
  • 作用
    • 控制用户对系统资源的访问。
    • 基于角色或权限的授权判断。

9. Cryptography(加密)

  • 概述:Shiro 提供了对称加密和非对称加密的支持,用于保护敏感数据的安全。
  • 作用
    • 加密敏感数据,如密码、消息内容等。
    • 支持生成数字签名和验证签名。

最近更新时间:2024-12-25