Springboot集成shiro

Springboot集成shiro

(1) shiro功能介绍

Authentication: 身份认证,登录

Authorization:验证权限,即,验证某个人是否有做某件事的权限

Session Management :会话管理,普通用户特定的会话,支持web。

Cryptography :加密,保证数据安全

(2)其他特性

Web Support:web支持,更容易继承web应用

Caching:缓存

Concurrency:多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去;

Testing:提供测试支持

Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问

Remember Me:记住我,即记住登录状态,下次再来的话就不用登录了

(3)架构服务

从最顶层看shiro,有三个最基本概念:Subject,SecurityManageer,Realm

  • Subject:主体,抽象的概念,代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等,
  • SecurityManageer:安全管理器,shiro的核心,即所有与安全有关的操作都会与SecurityManageer交互,并且它管理着所有的Subject。
  • Realm:shiro和应用程序的权限数据之间的桥梁,为shiro提供安全数据,SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法,也需要从Realm得到用户相应的角色/权限进行验证用户是否能进行操作;可以把Realm看成DataSource,即安全数据源。

shiro架构图如下

Springboot集成shiro

Authentication和Authenticator的主要流程

  • Authentication(认证):
    与认证流程相关的Shiro各对象关系如下:
    Springboot集成shiro

以更加清晰的流程图对应上述的步骤:
Springboot集成shiro

  • Authenticator(授权): 与授权相关的Shiro个对象关系如下:
    Springboot集成shiro

换成流程图对应上述的步骤:
Springboot集成shiro