Shiro Review——权限管理基础知识

只要是有用户参与的系统一般都会有权限管理,权限管理实现对用户的访问控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。

权限管理包括用户认证和授权两部分。

一,用户认证

用户去访问系统,系统要验证用户身份的合法性。比较常见的认证方法:1,用户名密码方式;2,指纹识别,比如我们上班打卡;3,基于证书方式;

当系统验证了用户身份的合法性,用户方可访问系统的资源。

1, 用户认证流程

权限管理是基于资源的,当我们去访问资源的时候,先判断这个资源是否允许匿名访问,比如我们访问一个登录页,发现这个登录页面可以匿名访问,则我们访问过程被放行,进入用户身份认证。

2,用户认证的关键对象

*subiect:主体,可以起理解为用户,但也可能是程序,都要去访问系统的资源,所以,系统需要对subject进行认证。

*principal:身份信息,通常是唯一的,一个主体还有多个身份信息,但是都有一个主身份信息(primary principal)。

*credential:凭证信息,可以是密码,证书,指纹。

二,用户授权

用户认证通过之后,系统对用户访问资源进行控制,用户具有访问资源的权限才可以被授权访问资源。

1,授权流程

用户认证通过之后,在用户访问资源之前,首先要判断用户是否具有访问这一资源的权限,如果有的话才可以继续访问。其实在权限控制之前,还有一项要做的额外工作就是为用户分配权限,相当于用户权限的一个初始化的过程。

2,关键对象

授权的过程可以理解为:who 对what进行了how

who:即subject,subject在认证通过后对系统进行访问控制。

what:资源(Resource),subject必须具备资源的访问权限才可以访问该资源,比如,用户购物时候要删除商品,但是用户是没有删除商品信息这个权限的,访问被拒绝。

PS:资源分为资源类型和资源实例,比如,商品信息,和商品ID为96e79218965eb72c92a549dd5a330112的商品。

how:权限/许可(permission),针对资源的权限或许可,subject具有permission访问资源,如何访问操作需要定义Permission,如,用户添加,商品删除。

3,权限模型

主体(账号、密码)

资源(资源名称,访问地址)

权限(权限名称、资源id)

角色(角色名称)

角色和权限关系(角色id、权限id)

主体和角色关系(主体id、角色id)

通常在开发中,将资源跟权限合并为一张表:

资源(资源名称、访问地址)

权限(权限名称、资源id)

合并为:

权限(权限名称、资源名称、资源访问地址)

4,分配权限

在授权流程中,如果要使授权流程正常走下去,在这之前,要初始化我们的权限数据,即分配权限。用户需要分配相应的权限才可访问相应的资源。

权限是对于资源的操作许可。通常给用户分配资源权限需要将权限信息持久化,比如存储在关系数据库中。把用户信息、权限管理、用户分配的权限信息写到数据库(权限数据模型)

5,授权控制

授权控制分为两种:基于角色的访问控制和基于资源的访问控制。

基于角色的访问控制: 比如,在系统中,我们将角色划分为:管理员,一般用户,匿名用户。通过配置用户在系统中的角色,来划分用户可以访问的资源。

缺点:扩展性维护性不强。

基于资源的访问控制:资源在系统中是不变的,比如资源有:类中的方法,页面中的按钮。一般建议使用这种方式实现访问控制。

三,权限管理的解决方案

1,粗粒度权限管理和细粒度权限管理

粗粒度权限管理,对资源类型的权限管理。资源类型比如:菜单、url连接、用户添加页面、用户信息、类方法、页面中按钮。。

粗粒度权限管理比如:超级管理员可以访问户添加页面、用户信息等全部页面。

部门管理员可以访问用户信息页面包括 页面中所有按钮。

细粒度权限管理,对资源实例的权限管理。资源实例就资源类型的具体化,比如:用户id为001的修改连接,1110班的用户信息、行政部的员工。实际上,  细粒度权限管理就是数据级别的权限管理。

2,如何实现粗粒度的权限管理和细粒度的关系管理


粗粒度权限管理比较容易将权限管理的代码抽取出来在系统架构级别统一处理。比如:通过springmvc的拦截器实现授权。

对细粒度权限管理在数据级别是没有共性可言,针对细粒度权限管理就是系统业务逻辑的一部分,如果在业务层去处理相对比较简单,如果将细粒度权限管理统一在系统架构级别去抽取,比较困难,即使抽取的功能可能也存在扩展不强。

建议细粒度权限管理在业务层去控制。

3,实际开发中权限系统的常见实现方式

1,基于ULR拦截:通过拦截器拦截到URL,然后进行用户认证,用户授权,通过这两部验证之后,用户才可以访问资源。

2,通过类似shiro这类权限框架实现。

时间: 2024-08-27 20:29:42

Shiro Review——权限管理基础知识的相关文章

MongoDB 学习笔记之 权限管理基础

权限管理基础 MongoDB有很多用户roles,这里只是简单列举下命令的使用,具体的role的含义,请查阅官方文档. https://docs.mongodb.com/manual/reference/built-in-roles/#userAdmin 在启用权限验证之前,需要重启服务,开启auth: 命令使用示例: use admin; #创建用户,这里Mongo 3和Mongo 2用的方法不同了. db.createUser({user: 'sky', pwd: 'CSL', roles:

Windows权限提升基础知识和命令

介绍 这篇文章是介绍window的权限提升,虽然不是一个全面的指南,但会试图覆盖主要的技术,常用的资源列表在文章底部,可供大家参考. window权限提升基础知识 初始信息收集 在开始提权之前,我们需要了解操作系统基本的信息,如安装软件,操作系统版本,连接用户,端口进程等信息, 确定操作系统名称和版本 1 C:\Users\sanr> systeminfo | findstr /B /C:"OS Name" /C:"OS Version" 查看主机名 1 C:

spring boot 2 + shiro 实现权限管理

Shiro是一个功能强大且易于使用的Java安全框架,主要功能有身份验证.授权.加密和会话管理.看了网上一些文章,下面2篇文章写得不错.Springboot2.0 集成shiro权限管理 Spring Boot:整合Shiro权限框架 自己动手敲了下代码,在第一篇文章上加入了第二篇文章的Swagger测试,另外自己加入lombok简化实体类代码,一些地方代码也稍微修改了下,过程中也碰到一些问题,最终代码成功运行. 开发版本:IntelliJ IDEA 2019.2.2jdk1.8Spring B

Springmvc集成Shiro实现权限管理

Shiro是一个安全框架,他可以集成其他开发开发框架 如:Springmvc,实现用户身份认证.权限管理等等功能,shiro详细的介绍也就不讲了,这里给出一些关键的知识点吧: 知识点: shiro中默认的过滤器 过滤器名称 过滤器类 描述 anon org.apache.shiro.web.filter.authc.AnonymousFilter 匿名过滤器 authc org.apache.shiro.web.filter.authc.FormAuthenticationFilter 如果继续

shiro框架--权限管理

一.maven坐标 1 <!-- 权限控制 框架 --> 2 <dependency> 3 <groupId>org.apache.shiro</groupId> 4 <artifactId>shiro-all</artifactId> 5 <version>${shiro.version}</version> 6 </dependency> 二.shiro框架的四大功能 1.认证 2.授权 3.加

SpringBoot 集成 Shiro:使用Shiro的权限管理(六)

上一章使用了Shiro的角色管理,现在加入粒度更小的权限管理,即根据用户角色分配的权限来判断用户能否访问页面 准备实体类和修改数据源 @Getter @Setter public class Role implements Serializable { private String name; private Set<Permission> permissions; public Role(String name) { this.name = name; this.permissions =

权限框架 基础知识

权限管理框架 属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源   包括用户身份认证和授权两部分,简称认证授权 1.身份认证 判断一个用户是否为合法用户的处理过程: 最常用的简单身份认证方式是系统通过核对用户输入的用户名和口令,看其是否与系统中存储的该用户的用户名和口令一致,来判断用户身份是否正确 2.授权管理 即访问控制,控制谁能访问哪些资源: 体进行身份认证后需要分配权限方可访问系统的资源,对于某些资源没有权限是无法访

权限管理基本知识

什么是权限管理 只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源. 权限管理包括用户认证和授权两部分. 用户认证 用户认证,用户去访问系统,系统要验证用户身份的合法性.最常用的用户身份验证的方法:1.用户名密码方式.2.指纹打卡机.3.基于证书验证方法..系统验证用户身份合法,用户方可访问系统的资源. 关键对象 subject:主体,理解为用户,可能是程序,都要去访问系统的资源,系统需要对subject

权限管理原理知识(一)

1.1     什么是权限管理 只要有用户参与的系统一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源. 权限管理包括用户认证和授权两部分. 1.2     用户认证 1.2.1     概念 用户认证,用户去访问系统,系统要验证用户身份的合法性.最常用的用户身份验证的方法:1.用户名密码方式.2.指纹打卡机.3.基于证书验证方法..系统验证用户身份合法,用户方可访问系统的资源. 1.2.2    用户认证流程 1.2.3