image.png

Apache Shiro™是一个功能强大且易于使用的Java安全框架,它执行身份验证,授权,加密和会话管理。使用Shiro易于理解的API,您可以快速轻松地保护任何应用程序-从最小的移动应用程序到最大的Web和企业应用程序。

功能概况

Apache Shiro是具有许多功能的全面的应用程序安全框架。下图显示了Shiro的核心功能模块。
SpringBoot 集成Shiro:1-Apache Shiro 简介 - 图2

Shiro的“应用程序安全性的四个基石”:

  • Authentication (身份验证):有时称为“登录”,这是证明用户就是他们所说的身份的行为。
  • Authorization (授权):访问控制的过程,即确定“谁”有权访问“什么”。
  • Session Management (会话管理):即使在非Web或EJB应用程序中,也管理用户特定的会话。
  • Cryptography (密码术):使用密码算法保持数据安全,同时仍易于使用。

在不同的应用程序环境中,还具有其他功能来支持和加强这些问题,尤其是:

  • Web Support:Shiro的Web支持API可帮助轻松保护Web应用程序。
  • Caching:缓存是Apache Shiro API的第一层公民,可确保安全操作保持快速和高效。
  • Concurrency:Apache Shiro的并发功能支持多线程应用程序。
  • Testing:测试支持可帮助您编写单元测试和集成测试,并确保您的代码将按预期进行保护。
  • “Run As”:一种功能,允许用户采用其他用户的身份(如果允许),有时在管理方案中很有用。
  • Remember Me:在各个会话中记住用户的身份,因此他们仅在必要时登录。

核心组件

Subject

即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。但考虑到大多数目的和用途,你可以把它认为是Shiro的“用户”概念。Subject代表了当前用户的安全操作,SecurityManager则管理所有用户的安全操作。

SecurityManager

它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。可以理解成控制中心,所有请求最终基本上都通过它来代理转发,一般我们程序中不需要直接跟他打交道。

Realm

Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。从这个意义上讲,Realm实质上是一个安全相关的DAO:它封装了数据源的连接细节,并在需要时将相关数据提供给Shiro。当配置Shiro时,你必须至少指定一个Realm,用于认证和或授权。配置多个Realm是可以的,但是至少需要一个。

参考