Apache Shiro 原理

185 阅读2分钟

Apache Shiro 是一个强大且易用的Java安全框架,提供了身份验证、授权、加密和会话管理等功能。Shiro的原理主要围绕着以下几个核心概念:

  1. Subject(主体) :Subject是Shiro的核心概念,表示一个用户或者系统的主体,可以是实际用户、第三方服务、系统帐号等。Subject可以通过身份验证(登录)获得身份,然后执行授权操作。
  2. Realm(域) :Realm是Shiro进行身份验证和授权的安全实体数据源。Realm从应用程序获取安全数据(如用户、角色、权限),然后Shiro使用这些信息进行身份验证和授权。应用程序需要为Shiro提供至少一个Realm。
  3. SecurityManager(安全管理器) :SecurityManager是Shiro的核心组件,负责协调所有的Shiro组件,是Shiro的核心。SecurityManager负责与Shiro的其他部分(Subject、Realm等)进行交互,确保安全操作。
  4. Authentication(身份验证) :Authentication是验证Subject身份的过程,也就是登录过程。Subject通过提供的身份信息进行登录,SecurityManager通过Realm验证提供的身份信息的有效性。
  5. Authorization(授权) :Authorization是确定Subject有权执行什么操作的过程。一旦Subject被成功地身份验证,SecurityManager会检查Subject是否有执行特定操作的权限,即授权。
  6. Session Management(会话管理) :Shiro提供了对用户会话的支持,包括Web和非Web环境中的会话管理。会话管理可用于存储用户状态、权限信息等。
  7. Cryptography(加密) :Shiro提供了对密码等敏感信息的加密支持,确保用户的敏感信息在存储和传输过程中得到保护。

Shiro的工作流程大致如下:

  1. 用户进行身份验证,提交身份信息。
  2. SecurityManager调用配置的Realm进行身份验证。
  3. Realm验证身份,将身份信息返回给SecurityManager。
  4. SecurityManager将认证信息存储在Subject中。
  5. 用户进行授权操作,提交需要执行的操作。
  6. SecurityManager调用配置的Realm进行授权。
  7. Realm验证权限,将授权信息返回给SecurityManager。
  8. SecurityManager根据权限信息决定是否允许执行操作。

总的来说,Shiro通过Subject、Realm、SecurityManager等组件的协同工作,提供了一个灵活且易于集成的安全框架,适用于各种Java应用。