shiro安全权限框架的概念及springboot配置的依赖

最近,去了解了一下shiro权限框架的概念和依赖的关系。下面我来说说吧。

shiro权限框架概念

shiro是一二个强大且易用的java安全框架,执行身份验证,授权,密码学和会话管理。

Authentication :身份认证,web应用中就是“登录”过程,就是Shiro框架证明用户的行为的过程(验证用户是否是他们申明的身份)。
Authorization :权限,即Shiro控制用户的访问过程,即确定“谁”可以访问“什么”。
Session Management : 会话管理,管理用户会话,即Shiro在用户登录后会管理用户和应用的会话过程,主要体现在Shiro会控制用户和应用的交互过程,什么能访问,什么不能访问。即使在非Web或EJB应用程序中。
Cryptography :密码学,使用易于使用的加密算法保持数据安全,比如提供用户密码的安全算法。

Shiro俗语:

认证
认证是验证主体身份的过程 - 基本上证明有人真的是他们所说的他们是谁那样。 当认证成功时,应用程序可以信任保证为应用程序期望的对象。

授权
授权,也称为访问控制,是确定用户/主题是否被允许做某事的过程。 通常通过检查和解释主体的角色和权限(见下文),然后允许或拒绝对所请求的资源或功能的访问来实现。

密码crytography
密码是用于执行加密或解密的算法。 该算法通常依赖于称为密钥的一条信息。 并且加密基于密钥而变化的,因此如果没有它,则解密是非常困难的。密码有不同的变化。 块密码对通常具有固定大小的符号块进行工作,而流密码对连续的符号流进行工作。 对称密码使用相同的密钥进行加密和解密,而非对称密码使用不同的密钥。 如果非对称密码中的密钥不能从另一个密钥导出,则可以共享创建公钥/私钥对。

凭据credential
证书是验证用户/主体的身份的一条信息。 在认证尝试期间,一个(或多个)凭证与主体一起提交,以验证提交它们的用户/主题实际上是关联的用户。 证书通常是非常秘密的东西,只有特定用户/主体知道,诸如:密码或PGP密钥或生物特征属性或类似机制。

这个想法是,对于主体,只有一个人会知道正确的证书与该主体“配对”。 如果当前用户/主题提供与存储在系统中的正确凭证相匹配的正确凭证,则系统可以假定并相信当前用户/主题真正是他们所说的。 信任程度随着更安全的凭证类型(例如生物特征签名>密码)而增加。

加密 比如密码加密
密码术是通过隐藏信息或将其转换为废话来保护信息免于不受欢迎的访问的做法,因此没有人能读取它。 Shiro专注于加密技术的两个核心元素:使用公钥或私钥加密数据的密码,以及对密码等数据进行不可逆加密的哈希(也称为消息摘要)。

哈希 哈希算法
哈希函数是输入源(有时称为消息)的单向,不可逆转换,转换为编码的哈希值,有时称为消息摘要。 它通常用于密码,数字指纹或具有底层字节数组的数据。

权限 permission
权限在Shiro中解释:它是一个描述应用程序中的原始功能的语句。 权限是安全策略中的最低级别构造。 他们只定义了应用程序可以做什么。不描述“谁”能够执行的操作。 权限只是一个行为的声明,没有更多。
一些权限的示例:
打开一个文件,查看’/user/list‘网页,打印文档,删除一个用户等

主体 principal
主体是应用程序用户(主题)的任何标识属性。 “标识属性”可以是对您的应用程序有意义的任何内容 - 用户名,姓氏,给定名称,社会安全号码,用户ID等。Shiro还引用了称为主体的主要主体的东西。主要主体是在整个应用程序中唯一标识主题的任何主体。 理想的主要主体是用户名或用户ID,它是RDBMS用户表主键。 应用程序中的用户(主题)只有一个主要主体。

领域 realm
领域是可以访问特定于应用程序的安全数据(如用户,角色和权限)的组件。 它可以被认为是一个安全特定的DAO(数据访问对象)。 领域将这种特定于应用程序的数据转换为Shiro理解的格式,所以Shiro可以提供一个易于理解的主题编程API,无论存在多少数据源或应用程序特定的数据。
领域通常与数据源(例如关系数据库,LDAP目录,文件系统或其他类似资源)具有1对1关联。 因此,领域接口的实现使用数据源特定的API来发现。诸如JDBC,文件IO,Hibernate或JPA或任何其他数据访问API的授权数据(角色,权限等)。

角色 roles
角色的定义可以根据您与谁交谈。 在许多应用程序中,人们使用隐含地定义安全策略的模糊概念。 Shiro更喜欢将角色解释为一个命名的权限集合。 这是一个应用程序唯一名称,聚合一个或多个权限声明。
这是一个比许多应用程序使用的隐式更具体的定义。 如果你选择让数据模型反映Shiro的假设,你会发现将有更多的权力来控制安全策略。

会话 session
会话是在一段时间内与软件系统交互的单个用户/主题相关联的有状态数据上下文。 在主题使用应用程序时,可以从会话中添加/读取/删除数据,并且应用程序可以稍后在必要时使用此数据。 当用户/主题注销应用程序或由于不活动导致超时时,会话将终止。
对于熟悉HttpSession的人来说,Shiro会话的目的也是一样的,除了Shiro会话可以在任何环境中使用,即使没有Servlet容器或EJB容器可用。

主题 subject
主题只是一个奇特的安全术语,基本上意味着应用程序用户的安全特定的“视图”。 主体并不总是需要反映一个人,虽然 - 它可以表示一个外部进程调用您的应用程序,或者可能是一个守护进程系统帐户在一段时间间歇地执行某些事情(如cron作业)。 它基本上是与应用程序做某事的任何实体的表示。

shiro的主要功能是:
用户认证,权限控制,会话管理,数据加密,Web集成与缓存
shiro的三个核心概念:

subject主体:是一个当前执行用户的特定的安全“视图”。

SecurityManager安全管理器:是Shiro的核心部分,作为一种“保护伞”对象来协调内部安全组件共同构成一个对象图。

Realms域:是担当Shiro和应用程序的安全数据之间的“桥梁”或“连接器”。
shiro不回去维护用户,维护权限,需要我们提供,然后通过响应

代码通过(subject)主体来进行认证和授权,而(subject)主体委托给(SecurityManager)安全管理器。给需要的shiro的主体注入(Realms)域,从而让(subject)主体能够得到合法的用户及权限进行判断。

初步理解:
先导入MAVEN的依赖,可以到shiro管理查看到shiro的依赖,接着配置xml
1.使用用户登录信息创建令牌,token可以理解为用户令牌,登录的过程被抽象为Shiro验证令牌是否具有合法身份以及相关权限。
2.执行登录动作,注入SecurityManager安全管理器,获取subject主体的单例对象,然后登录。
3.判断用户,Shiro本身无法知道所持有令牌的用户是否合法,因为除了项目的设计人员恐怕谁都无法得知。因此(Realm)域是整个框架中为数不多的必须由设计者自行实现的模块,通过数据
库查询判断。
4.shiro的安全用户界定,AuthorizationInfo,AuthenticationInfo,AuthenticationInfo代表了用户的角色信息集合,AuthorizationInfo代表了角色的权限信息集合,当我们想对项目中的某一个url路径设置了只允许某个角色或具有某种权限才可以访问的控制约束的时候,Shiro就可以通过以上两个对象来判断。
5.实现(Realm)域,缓存机制,timeToLiveSeconds为缓存的最大生存时间,timeToIdleSeconds为缓存的最大空闲时间。

这里是springboot整合thymeleaf,shiro,重点是配置shiro单Realm 实现shiro基本的原理的相关依赖。
在这里插入图片描述

Mysql驱动相关依赖
在这里插入图片描述

Mybatis-plus相关依赖
在这里插入图片描述
Thymeleaf相关依赖
在这里插入图片描述
其它依赖以及插件在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

就这样咯,还有详细的代码就没弄上来了,这个是文档的细节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值