Shiro简述

Shiro

是一款主流的 Java 安全框架,不依赖任何容器,可以运行在 Java SE 和 Java EE 项目中,它的主要作用是对访问系统的用户进行身份认证、授权、会话管理、加密等操作。

Shiro 就是用来解决安全管理的系统化框架。

Shiro官网

Shiro所有功能

image-20210823134457841

核心功能

  • Authentication :身份认证/登录,验证用户是不是拥有相应的身份
  • Authorization :授权,即权限验证,判断某个已经认证过的用户是否拥有某些权限访问某些资源,一般授权会有角色授权和权限授权
  • SessionManagement :会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的,web 环境中作用是和 HttpSession 是一样的
  • Cryptography :加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储

附加功能

  • Web Support :Web支持,可以非常容易的集成到Web环境
  • Caching :缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率
  • Concurrency :shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去
  • Testing :提供测试支持
  • Run As :允许一个用户假装为另一个用户的身份进行访问
  • Remember Me :记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了

Shiro核心组件

  • UsernamePasswordToken :Shiro 用来封装用户登录信息,使用用户的登录信息来创建令牌 Token
  • SecurityManager :Shiro 的核心部分,负责安全认证和授权
  • Suject :Shiro 的一个抽象概念,包含了用户信息,通常我们会将Subject对象理解为一个用户,同样的它也有可能是一个第三方程序,它是一个抽象的概念,可以理解为任何与系统交互的“东西”都是Subject。
  • Realm :开发者自定义的模块,根据项目的需求,验证和授权的逻辑全部写在 Realm 中
  • AuthenticationInfo :用户的角色信息集合,认证时使用
  • AuthorizationInfo :角色的权限信息集合,授权时使用
  • DefaultWebSecurityManager :安全管理器,开发者自定义的 Realm 需要注入到 DefaultWebSecurityManager 进行管理才能生效
  • ShiroFilterFactoryBean :过滤器工厂,Shiro 的基本运行机制是开发者定制规则,Shiro 去执行,具体的执行操作就是由 ShiroFilterFactoryBean 创建的一个个 Filter 对象来完成