Shiro 安全框架详解一(概念+登录案例实现)

本文介绍了基于角色的访问控制(RBAC)的概念,并详细讲解了Apache Shiro的安全框架,包括其与Spring Security的比较、Shiro的作用与架构。文章通过一个基于ini的认证案例,展示了Shiro的登录实现过程,涉及添加依赖、配置ini文件以及使用Shiro API。同时,还探讨了项目中集成Shiro的步骤,如配置代理过滤器、自定义Realm等。最后,文章总结了Shiro的基础内容,为后续的权限案例实现奠定了基础。
摘要由CSDN通过智能技术生成

总结内容

一、RBAC 的概念

RBAC 全称 Role Based Access Control,意思是基于角色的访问控制,说白了就是每个用户拥有不同的角色,每个角色又拥有不同的权限,用户通过所拥有的的权限对系统进行操作。
RBAC 是一种目前使用最普片的权限管理模型,该模型中有3个基础的组成部分,分别是:用户、角色、权限。我们接下来也是围绕这3个组成部分来进行的。


二、两种常用的权限管理框架

1. Apache Shiro

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,我们可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

2. Spring Security

Spring Security是为基于Spring的应用程序提供声明式安全保护的安全性框架,它提供了完整的安全性解决方案,能够在web请求级别和方法调用级别处理身份证验证和授权。因为基于Spring框架,所以Spring Security充分利用了依赖注入和面向切面的技术。

3. Shiro 和 Spring Security 比较

Shiro 比 Spring Security更容易上手使用和理解,Shiro 可以不跟任何的框架或者容器绑定,可独立运行,而Spring Security 则必须要有Spring环境, Shiro 可能没有 Spring Security 做的功能强大,但是在实际工作时可能并不需要那么复杂的东西,所以使用小而简单的 Shiro 就足够了。对于它俩到底哪个好,这个不必纠结,能更简单的解决项目问题就好了。


三、Shiro 的概述

1. shiro 作用

1)认证
2)授权
3)加密
4)会话管理
5)与 Web 集成
6)缓存
7)…

2. shiro 架构

Shiro 主要组件包括:Subject,SecurityManager,Authenticator,Authorizer,SessionManager,CacheManager,Cryptography,Realms。
在这里插入图片描述

  1. Subject(用户)
    Subject即主体,外部应用与subject进行交互,subject记录了当前的操作用户,将用户的概念理解为当前操作的主体。Subject 可以是一个人,但也可以是第三方服务、守护进程帐户、时钟守护任务或者其它–当前和软件交互的任何事件。
    在程序任意位置可使用:Subject currentUser = SecurityUtils.getSubject() 获取到subject主体对象,类似 Employee user = UserContext.getUser() ;

  2. SecurityManager(安全管理器)
    它是 shiro 功能实现的核心,负责与后边介绍的其他组件(认证器/授权器/缓存控制器)进行交互,实现 subject 委托的各种功能。有点类似于SpringMVC 中的 DispatcherServlet 前端控制器,负责进行分发调度。

  3. Realms(数据源)
    Realm 充当了 Shiro 与应用安全数据间的“桥梁”或者“连接器”。;可以把Realm 看成 DataSource,即安全数据源。执行认证(登录)和授权(访问控制)时,Shiro 会从应用配置的 Realm 中查找相关的比对数据。以确认用户是否合法,操作是否合理。

  4. Authenticator(认证器)
    用于认证,从 Realm 数据源取得数据之后进行执行认证流程处理。

  5. Authorizer(授权器)
    用户访问控制授权,决定用户是否拥有执行指定操作的权限。

  6. SessionManager (会话管理器)
    Shiro 与生俱来就支持会话管理,这在安全类框架中都是独一无二的功能。即便不存在 web 容器环境,shiro 都可以使用自己的会话管理机制,提供相同的会话 API。

  7. CacheManager (缓存管理器)
    用于缓存认证授权信息等。

  8. Cryptography(加密组件)
    Shiro 提供了一个用于加密解密的工具包。


四、基于 ini 的认证案例实现

1. 实现原理图

在这里插入图片描述

2. 实现代码

2.1 添加 maven jar包依赖
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.1.3</version>
</dependency>
<dependency>
    <groupId>org.apache.shiro</groupId>
    <artifactId>shiro-core</artifactId>
    <version>1.5.2</version>
</dependency>

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.22</version>
    <scope>provided</scope>
</dependency>
2.2 编写 ini 配置文件:shiro-authc.ini

shiro默认支持的是ini配置的方式,这里只是为了方便,项目中还是会选择xml

#用户的身份、凭据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值