Shiro核心概念

2023-11-20 14:35:21 浏览数 (1)

什么是权限管理

权限管理就是实现对用户访问系统的资源进行控制,用户可以访问而且只能访问自己被授权的资源,只要有用户和密码的系统,权限管理几乎都会出现,举例,给张三赋予 “人力资源经理” 的角色,“人力资源经理” 具有 “查询员工”、“添加员工”、“修改员工” 和 “删除员工” 的权限。此时张三能够进入系统,则只可以进行这些操作。

在此建议Shiro可以适当的看看不必深究,现在都是使用Spring security or Sa-Token

权限管理

认证

访问需要授权的系统资源,用户首先需要经过身份认证,也就是判断一个用户是否为合法的用户的处理过程。

授权

认证通过之后,在看看该用户具有哪些权限,就是可以访问的资源范围,控制能够访问哪些资源的一个过程。

Shiro概述

Apache Shiro 是 Java 的一个安全框架,Shiro 是一个强大的简单易用的 Java安全框架,主要用来更便捷的 认证授权加密会话管理、与 Web集成、缓存等,Shiro 使用起来体积小而简单,Spring 中有一个 Spring Security,也是一个权限框架,它和 Spring 依赖过于紧密,没有 Shiro 使用简单,相对比 Spring Security 难一点,Shiro 不依赖于 Spring,Shiro 不仅可以实现 Web应用的权限管理,还可以实现 C/S 系统的权限管理,分布式系统的权限管理,Shiro 属于轻量级的框架,越来越多企业项目开始使用Shiro 来作为自己系统的安全框架了。

核心类

整体类图如下图所示:

类名

作用

Authentication

身份认证,也就是登录,验证用户是不是拥有相应的身份

Authorization

授权,也就是权限验证,验证某个已认证的用户是否拥有某个权限

Session Manager

会话管理,就是用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话当中

Cryptography

加密,保护数据的安全性

Web Support

Web 的支持,可以非常容易的集成到 Web环境

Caching

缓存,比如用户登录后的用户信息、拥有的角色和权限不必每次去查,这样可以提高效率

Concurrency

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

Testing

提供了测试的支持

Run As

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

Remember Me

记住我,这个是非常常见的功能,即一次登录之后,下次再来的话就不用在登录了

主要概念

Subject

当前的操作用户,可以是人,爬虫,当前正在跟软件交互的东西,在 Shiro 当中我们可以统称 Subject 为 "用户" 在代码的任何地方,你都能轻易的获得 Shiro Subject,一旦获得 Subject,你就可以立即获得你希望用 Shiro 为当前用户做的 90% 的事情,也就是说你就可以使用 Shiro 为当前的用户做 90% 的事情了,登录、退出、访问会话、执行授权检查等。

SecurityManager

SecurityManager 则管理所有用户的安全操作,引用了多个内部嵌套的安全组件,是 Shiro 框架的核心,你可以把它看成是一个 DispatcherServlet 前端控制器,用于调度各种 Shiro 框架的服务

Realms

Realms 则是用户的信息认证器和用户的权限认证器,执行认证(登录)和授权(访问控制)时,Shiro 会从应用配置的 Realm 中查找很多内容,Realm 可以理解为读取用户信息、角色及权限的 DAO,SecurityManager 要验证用户的身份与权限,那么它需要从 Realm 中获取相应的信息进行比较来确定用户的身份是否合法,可以把 Realm 看成 DataSource,安全数据源。

Shiro的架构

组件名

作用

Subject(主体)

主体可以是用户也可以是程序,主体要访问系统,系统需要对主体进行认证、授权才可以进行访问

SecurityManager(安全管理器)

对主体进行认证和授权都是通过 SecurityManager 进行的

Authenticator(认证器)

主体进行认证最终通过 Authenticator 来进行认证的

Authorizer(授权器)

主体进行授权最终通过 Authenticator 来进行授权的

SessionManager(会话管理)

Web 应用中一般是用 Web容器对 Session 进行管理,Shiro 也提供了一套Session管理的方式

SessionDao

通过 SessionDao 管理 Session数据

CacheManager(缓存管理器)

主要对 Session 和授权数据进行缓存,比如将授权数据通过 CacheManager 进行缓存管理,和 Ehcache 整合对缓存数据进行管理

Realm(领域)

相当于数据源,通过 Realm 存取认证、授权相关的数据

Cryptography(密码管理)

提供了一套加密和解密的组件,方便开发,比如提供常用的散列、加密和解密等功能

最后

本期结束咱们下次再见

0 人点赞