《权力与纷争-Shiro》-Know your own weapons

2024-01-07 18:59
文章标签 shiro 纷争 know 权力 weapons

本文主要是介绍《权力与纷争-Shiro》-Know your own weapons,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:这次写有关Shiro框架的一系列博客,为自己加油吧!


Shiro是什么?


            Shiro是一个权限框架,实现系统权限的控制,如同一个系统登录,管理员能控制什么,使用什么资源(资源可以是某个按钮,菜单,功能),而用户登录后能使用什么资源。

            Shiro主要有认证,授权,加密,会话管理这几块,而且Shiro框架不仅BS试用,CS项目也可以使用Shiro框架,是一款非常优秀的权限框界面。


            类似的有Spring 的Security,也是权限框架,不过比较依赖Spring,但是有人说Security比Shiro要强大,Shiro比较灵活。


Shiro能干什么?(功能点)


Primary Concerns(主要功能)


Authentication :身份验证/登录,验证用户的身份。
Authorization:授权,权限认证,确定用户能干什么,不能干什么。
SessionManager :会话管理,用户登录一次就是一次会话,没有退出前,他的所有信息都在会话中。
Cryptography:加密,保护数据安全性,比对密文而不是铭文。


Supporting Features(支撑功能)


Web support:web支持,容易集成到web环境
Caching:缓存,保存角色,权限信息,不用每次都去查


Concurrency:多线程应用并发,一个线程中开启另一个线程,能把权限传播过去
Testing:测试支持
Run As :允许一个用户假装一个用户进行访问

Remember Me :记住我,登陆一次,下次再来不用登陆



Shrio 不回去维护用户,维护权限,这些我们自己去做,然后通过接口注入给Shiro


Shiro长得咋样?




Application code(应用程序代码调用的都是Subject),可以看出Subject是对外API的核心。


Subject:

           主体,代表了当前用户,用户不一定是具体的人,也可以是与之交互的任何东西,如网络爬虫,机器人等=  =,所有的Subject都绑定到SecurityManager,Subjecj就是一个门面,SecurityManager 才是实际的执行者,这是一个慈禧与光绪的故事....


SecurityManager :

           安全管理器,所有相关操作都会与SecurityManager 交互,且她管着所有Subject,可以看出他是Shiro的核心,负责与其他组件的交互,类似于SpringMVC的DispatcherServlet。


Realm:

            域,Shiro从Realm获取安全数据(用户,角色,权限)SecurityManager 从Realm里验证用户的身份是否合发,这个由我们实现的。


简单应用Shiro基本要

            1 代码调用Subject来进行授权认证,而Subject 委托给SecurityManager。

           2 给SecurityManager注入Realm,让SecurityManager对用户和权限进行判断。


Shiro的架构



最上面一行,说的是可以通过

          C++,C#编程语言,PHP,Ruby脚本语言,Felx,Silvelight 前端技术,WebMVC前端框架,最后是其他独立程序,这些都通过使用Subject用户。


Subject :主体,可以看到主体可以是任何可以与应用交互的“用户”;


SecurityManager :  

           相 当 于 SpringMVC 中 的 DispatcherServlet 或 者 Struts2 中 的FilterDispatcher;是 Shiro 的心脏;所有具体的交互都通过 SecurityManager 进行控制;它管理着所有 Subject、且负责进行认证和授权、及会话、缓存的管理。


Authenticator :

            认证器,负责主体认证的,这是一个扩展点,如果用户觉得 Shiro 默认的不好,可以自定义实现;其需要认证策略(Authentication Strategy),即什么情况下算用户认证通过了;


Authrizer:

            授权器,或者访问控制器,用来决定主体是否有权限进行相应的操作;即控制着用户能访问应用中的哪些功能;


Realm :

            可以有 1 个或多个 Realm,可以认为是安全实体数据源,即用于获取安全实体的;可以是 JDBC 实现,也可以是 LDAP 实现,或者内存实现等等;不知道你的用户/权限存储在哪及以何种格式存储;所以我们一般在应用中都需要实现自己的 Realm;


SessionManager :

            如果写过 Servlet 就应该知道 Session 的概念,Session 呢需要有人去管理它的生命周期,这个组件就是 SessionManager;而 Shiro 并不仅仅可以用在 Web 环境,也可以用在如普通的 JavaSE 环境、EJB 等环境;所有呢,Shiro 就抽象了一个自己的 Session来管理主体与应用之间交互的数据;这样的话,比如我们在 Web 环境用,刚开始是一台Web 服务器;接着又上了台 EJB 服务器;这时想把两台服务器的会话数据放到一个地方,这个时候就可以实现自己的分布式会话(如把数据放到 Memcached 服务器);


SessionDAO: 

             DAO 大家都用过, 数据访问对象, 用于会话的 CRUD, 比如我们想把 Session保存到数据库,那么可以实现自己的 SessionDAO,通过如 JDBC 写到数据库;比如想把Session 放到 Memcached 中,可以实现自己的 Memcached SessionDAO;另外 SessionDAO中可以使用 Cache 进行缓存,以提高性能;


CacheManager:

             缓存控制器,来管理如用户、角色、权限等的缓存的;因为这些数据基本上很少去改变,放到缓存中后可以提高访问的性能


Cryptography :密码模块,Shiro 提高了一些常见的加密组件用于如密码加密/解密的。

最后一行是数据。



简单的介绍就到这了,下次给大家来个简单例子哈!



————————————————————chenchen——————————————————————


这篇关于《权力与纷争-Shiro》-Know your own weapons的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/580920

相关文章

【Shiro】Shiro 的学习教程(三)之 SpringBoot 集成 Shiro

目录 1、环境准备2、引入 Shiro3、实现认证、退出3.1、使用死数据实现3.2、引入数据库,添加注册功能后端代码前端代码 3.3、MD5、Salt 的认证流程 4.、实现授权4.1、基于角色授权4.2、基于资源授权 5、引入缓存5.1、EhCache 实现缓存5.2、集成 Redis 实现 Shiro 缓存 1、环境准备 新建一个 SpringBoot 工程,引入依赖:

【Shiro】Shiro 的学习教程(二)之认证、授权源码分析

目录 1、背景2、相关类图3、解析3.1、加载、解析阶段3.2、认证阶段3.3、授权阶段 1、背景 继上节代码,通过 debug 进行 shiro 源码分析。 2、相关类图 debug 之前,先了解下一些类的结构图: ①:SecurityManager:安全管理器 DefaultSecurityManager: RememberMeManager:实现【记住我】功能

【Shiro】Shiro 的学习教程(一)之快速入门

目录 1、Shiro 简介2、Shiro 认证、授权2.1、认证2.2、授权 3、快速入门4、自定义 Realm5、加密6、实现授权 1、Shiro 简介 Shiro 官网:https://shiro.apache.org/ Shiro 是一个功能强大且易于使用的 Java 安全框架,它执行身份验证、授权、加密和会话管理。使用 Shiro 易于理解的 API,您可以快速轻松地保

HTB-You know 0xDiablos

引言 项目概述:HTB的EASY难度 PWN靶机 You know 0xDiablos https://app.hackthebox.com/challenges/106 本文详细解释了溢出payload的结构以及为什么要这样构造,友好的为想要入手PWN的朋友解释了原理技术点涉及: 32位linux逆向、32位程序调用、栈溢出目标与读者:网络安全兴趣爱好者、PWN新手 基本情况 运行看看

“苹果税”引发的苹果与腾讯、字节跳动之间的纷争与博弈

北京时间9月10日凌晨一点的Apple特别活动日渐临近,苹果这次将会带来iPhone16系列新品手机及其他硬件产品的更新,包括iPad、Apple Watch、AirPods等。从特别活动的宣传图和宣传标语“閃亮時刻”来看,Apple Intelligence将会是史上首次推出,无疑将会是iOS 18的重头戏和高光时刻。 不过就在9月2日,一则“微信可能不支持iPhone16”的

shiro session 监听

spring 使用 shiro 后,由于shiro重新封装了原有的session,所以不能再使用原来的session监听方法了 (1)在shiro配额只文件中设置监听类   <!-- shiroSessionListener  监听类--><bean id="shiroSessionListener" class="com.listener.ShiroSessionListener"></

Shiro身份认证流程

http://www.toutiao.com/a6353832181929279746/?tt_from=mobile_qq&utm_campaign=client_share&app=explore_article&utm_source=mobile_qq&iid=5840657922&utm_medium=toutiao_ios

Shiro-721漏洞详解及复现

之前有些Shiro-550反序列化漏洞的文章Shiro-550漏洞详解及复现_shiro框架漏洞-CSDN博客 这里简单补充一下关于Shiro-721漏洞的内容。 目录 Shiro-721漏洞原理 Padding Oracle攻击 利用条件 影响版本 漏洞复现 Shiro-721漏洞原理 Shiro-721用到的加密方式是AES-128-CBC,跟Shiro-550最大的

进阶SpringBoot之 Shiro(6)整合 Thymeleaf

Subject:用户 SecurityManager:管理所有用户 Realm:连接数据 pom.xml 导入 thymeleaf-extras-shiro 的 jar 包,整合 shiro-thymeleaf <!-- shiro-thymeleaf 整合 --><dependency><groupId>com.github.theborakompanioni</grou

Shiro的认证原理(Subject#login的背后故事)

登录操作一般都是我们触发的: Subject subject = SecurityUtils.getSubject();AuthenticationToken authenticationToken = new ...subject.login(authenticationToken); Subject的登录将委托给SecurityManager,SecurityManager的logi