当前位置: 首页 > news >正文

0101基础-认证授权-springsecurity

文章目录

    • 1 基础概念
      • 1.1 认证
      • 1.2 会话
      • 1.3 jwt
      • 1.4 授权
    • 2 授权的数据模型
    • 3 RBAC
      • 3.1 基于角色的访问控制
      • 3.2 基于资源的访问控制
    • 4 名词解析
      • 4.1 SSO
      • 4.2 CAS
      • 4.3 联合登陆
      • 4.4 多端登录:同一账号不同终端登录
      • 4.5 OAuth

1 基础概念

1.1 认证

认证是为了保护系统的隐私数据和资源,用户的身份合法方可访问系统的资源。

认证:用户认证就是判断一个用户的身份身份合法的过程。用户去访问系统资源时,系统要求验证用户的身份信息,身份合法方可继续访问,不合法则拒绝访问。

常见认证方式:

  • 用户名密码
  • 二维码登录
  • 手机验证码
  • 指纹认证

1.2 会话

认证授权方案的产生根本原因应用层(WEB)通信基于HTTP协议,而HTTP协议是无状态的,我们无法通过HTTP访问确认用户是否登录。用户登录后,为了避免用户每次操作都进行认证,需要将用户信息保存。会话就是系统为了保持用户的登录状态提供的机制,常见的有基于Session-Cookie方式,基于token方式。

  • Session-Cookie

基于Session-Cookie方式自行查阅相关文档。

缺点:服务器内存需要存储session信息,天然不支持分布式。

  • token

token是就是令牌的意思。用户认证成功后,服务器端生成一个token发给客户端,客户端可以放到cookie或者localStorage等存储介质中。每次请求时携带token,服务器通过接收校验该token来确认用户身份。

1.3 jwt

jwt(json web token)是token的一种实现方式。本质也是加密的字符串。jwt相关知识可自行参考相关文档。

  • Springboot + JWT-Token 生成与解析

1.4 授权

认证是为了保证用户身份的合法性,授权则是为了更细粒度的对隐私数据进行划分,授权不同的用户访问不同的资源。

授权:授权是用户认证通过后,根据用户的权限来控制用户访问资源的过程。

2 授权的数据模型

授权可简单理解为who对what进行how操作。

  • who:即主体(Subject),主体一般值用户。
  • what:即资源(Resource),如菜单,页面,按钮代码方法、系统商品信息等。系统菜单、页面、按钮、代码方法都属于系统功能资源,对于web系统每个功能资源通常对应一个URL;系统商品信息、订单信息、人员信息等属于实体资源(数据资源)。实体资源有资源类型和资源实例组成,比如商品信息为资源类型,编号为001的商品为资源实例。
  • how:权限/许可(Permission),规定了用户对资源的操作许可,权限脱离资源没有意义,如用户添加权限、用户修改权限等。通过权限可知用户对那些资源都有那些操作许可。

主体、资源、权限关系如下图所示:在这里插入图片描述

主体、资源、权限相关的数据模型如下:

主体(用户id、账号、密码、…)

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

权限(权限id、权限标识、权限名称、资源id、…)

角色(角色id、角色名称、…)

北京市昌平区建材城西路金燕龙办公楼一层 电话:400-618-9090角色和权限关系(角色id、权限id、…)

主体(用户)和角色关系(用户id、角色id、…)

主体(用户)、资源、权限关系如下图:在这里插入图片描述

通常企业开发中将资源和权限表合并为一张权限表,如下:

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

权限(权限id、权限标识、权限名称、资源id、…)

合并为:

权限(权限id、权限标识、权限名称、资源名称、资源访问地址、…)

修改后数据模型之间的关系如下图:在这里插入图片描述

3 RBAC

如何实现授权?业界通常基于RBAC实现授权。

3.1 基于角色的访问控制

RBAC基于角色的访问控制(Role-Based Access Control)是按角色进行授权,比如:主体的角色为总经理可以查

询企业运营报表,查询员工工资信息等,访问控制流程如下:在这里插入图片描述

根据上图中的判断逻辑,授权代码可表示如下:

if(主体.hasRole("总经理角色id")){
查询工资
}

如果上图中查询工资所需要的角色变化为总经理和部门经理,此时就需要修改判断逻辑为“判断用户的角色是否是总经理或部门经理”,修改代码如下:

if(主体.hasRole("总经理角色id") || 主体.hasRole("部门经理角色id")){
查询工资
}

根据上边的例子发现,当需要修改角色的权限时就需要修改授权的相关代码,系统可扩展性差。

3.2 基于资源的访问控制

RBAC基于资源的访问控制(Resource-Based Access Control)是按资源(或权限)进行授权,比如:用户必须具有查询工资权限才可以查询员工工资信息等,访问控制流程如下:

在这里插入图片描述

根据上图中的判断,授权代码可以表示为:

if(主体.hasPermission("查询工资权限标识")){
查询工资
}

优点:系统设计时定义好查询工资的权限标识,即使查询工资所需要的角色变化为总经理和部门经理也不需要修改授权代码,系统可扩展性强

4 名词解析

4.1 SSO

单点登录(Single Sign On),简称为 SSO,是比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统;一次退出,退出已登录的全部应用系统。

4.2 CAS

CAS是Central Authentication Service的缩写,中央认证服务,一种独立开放指令协议。CAS 是 耶鲁大学(Yale University)发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。

简单来说CAS是SSO的一种实现方式。

4.3 联合登陆

联合登录,就是通过开放认证平台由第三方应用做身份担保,使用户可以活得本系统的相关权限,最常见的身份担保平台就是微信、QQ,当然阿里系的一些应用,支付宝,淘宝也可以为用户做身份担保。

  • 联合登陆与单点登录

联合登录与单点登录区别主要就是: 联合登录是第三方提供身份担保,单点登录是通过统一认证中心确认登录状态。本质上单点登录的各个系统是完全互信的,联合登录是通过担保互信。

4.4 多端登录:同一账号不同终端登录

比如你在IOS移动端、MAC移动端、PC网页端、PC客户端登录QQ。

4.5 OAuth

OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。oAuth是Open Authorization的简写。

OAuth协议包含1.0和2.0版本,OAuth2.0授权验证流程更为简单安全,也是目前的主流方式,常见的厂商有支付宝、微信等。

参考文章:

  • 一文讲透认证授权的那些事
  • 一文彻底弄懂cookie、session、token
  • 解读认证和授权 OAuth、SSO、CAS、JWT
  • 认证、授权、鉴权、权限控制

参考视频:

  • 黑马程序员Java进阶教程快速入门Spring Security OAuth2.0认证授权

相关文章:

0101基础-认证授权-springsecurity

文章目录1 基础概念1.1 认证1.2 会话1.3 jwt1.4 授权2 授权的数据模型3 RBAC3.1 基于角色的访问控制3.2 基于资源的访问控制4 名词解析4.1 SSO4.2 CAS4.3 联合登陆4.4 多端登录:同一账号不同终端登录4.5 OAuth1 基础概念 1.1 认证 认证是为了保护系统的隐私数据和…...

一文简单了解THD布局要求

一、什么是THD? THD指总谐波失真。谐波失真是指输出信号比输入信号多出的谐波成分。谐波失真是系统不完全线性造成的。所有附加谐波电平之和称为总谐波失真。总谐波失真与频率有关。一般说来,1000Hz频率处的总谐波失真最小,因此不少产品均以…...

[C++]多态

🥁作者: 华丞臧 📕​​​​专栏:【C】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉LeetCode 文章目录一、多态…...

中国版ChatGPT高潮即将到来,解密ChatGPT底层网络架构

2022年11月30日人工智能研究实验室OpenAI发布全新聊天机器人ChatGPT,在中国用户无法访问的前提下,上线仅两个月月活用户就突破了1亿。ChatGPT如同重磅炸弹,一时间火遍全球。面对这一万亿级市场机遇,在国内,无论是资本方…...

PingCAP 唐刘:一个咨询顾问对 TiDB Chat2Query Demo 提出的脑洞

导读 近日,TiDB Cloud 发布了 Chat2Query 功能,在 TiDB Cloud 上通过自然语言提问,即可生成相应的 SQL,通过 TiDB Cloud 对上传的任意数据集进行分析。Gartner 也在一份有关 ChatGPT 对数据分析影响研究的报告中提及了 PingCAP 的…...

力扣-销售分析III

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目:1084. 销售分析III二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总结…...

U-Boot 之七 详解 Driver Model 架构、配置、命令、初始化流程

U-Boot 在 2014 年 4 月参考 Linux Kernel 的驱动模型设计并引入了自己的 Driver Model(官方简称 DM) 驱动架构。这个驱动模型(DM)为驱动的定义和访问接口提供了统一的方法,提高了驱动之间的兼容性以及访问的标准性。 …...

大数据算法重点

1 大数据亚线性空间算法 场景:用二进制存储一个数字N,需要log(N)的空间 问题:如果N特别大而且这样的N又特别的多,该怎么办呢? 思路:减少一些准确性,从而节省更多的空间。 解决办法:使…...

【Eclipse】The import xxxx cannot be resolved 问题解决

在Eclipse使用过程中,某一个类明明存在,但是使用import导入时,却总是提示The import xxxx cannot be resolved的错误,解决办法如下: 点击Project->Clean......

LinkWeChat系统Docker版部署注意事项

具体部署手册:https://www.yuque.com/linkwechat/help/ffi7bu注意事项:启动类配置文件路径需要修改,各个模块启动类原配置如下:.properties("spring.config.name:bootstrap", "config/run/bootstrap.yml")各个…...

【高数】不定积分之有理函数的积分

文章目录前言有理函数积分的通用解法有理函数的特殊解法前言 这个专栏开始更新高等数学的解题方法,本专栏没有特别强调概念,主要是让大家熟悉考研中的一些题型以及如何求解 关键步骤用蓝色高亮提示 总结方法用红色高亮提示 注意事项用绿色高亮提示 希望…...

Java——数组

目录 前言 一、数组的定义 二、数组声明和创建 三、三种初始化及内存分析 Java内存分析 三种初始化 静态初始化 动态初始化 数组的默认初始化 数组的四个基本特点 四、下标越界及小结 五、数组的使用 For-Each循环 数组作方法入参 数组作返回值 六、二维数组 七…...

产品分析|虎扑APP

不同于传统的体育新闻门户网站,虎扑以篮球社区起家,在经历了从体育论坛到体育新闻网站的发展后,又逐渐回归社区发展。 目前,虎扑汇聚了大量的男性用户,俨然成为了“互联网直男的自留地”。特立独行的发展方向使得虎扑不断发展壮大,同时也使得虎扑逐渐触碰到了行业天花板。…...

有限差分法-二维泊松方程及其Matlab程序实现

2.2 偏微分方程的差分解法 2.2.1 二维泊松方程 考虑区域 Ω \Omega Ω 上的二维泊松问题: { − ( ∂ 2...

【设计模式】6.代理模式

概述 代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理访问目标对象 这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 被代理的对象可以是:远程对象、创建开销大的对象或需要安全…...

SRC挖掘之Access验证校验的漏洞挖掘

漏洞已修复,感谢某大佬的知识分享。 任意用户密码重置->可获取全校师生个人mingan信息 开局就是信息收集。 对于挖掘edu的信息收集 1.可尝试谷歌搜索语法,获取学号信息 2. 旁站的渗透获取 3. 学校的贴吧获取(大部分都是本校学生) 当然我就是闲&a…...

GG-21 100V 5A逆功率继电器

1 用途 GG-21逆功率继电器在出现逆功率时,从电网中断开交流发电机。 2 概述 逆功率继电器是基于感应式原理(具有旋转磁场)而工作。 继电器导磁体由两个磁路系统组成:上磁路系统和下磁路系统。电流线圈安装在上磁路系统中,它由接在发电机某相的…...

MyBatis中#{}和${}的区别

目录 前言 1、处理参数的方式不同 2、${}的优点 3、SQL注入问题 4、like查询问题 前言 #{}和${}都可以在MyBatis中用来动态地接收参数,但二者在本质上还是有很大的区别。 1、处理参数的方式不同 ${} :预编译处理 MyBatis在处理#{}时&#xff0c…...

ElementUi的使用

ElementUi使用说明 element ui安装与配置 npm i element-ui –S项目入口文件main.js 导入 Element-UI 相关资源// 导入组件库 import ElementUI from element-ui; // 导入组件相关样式 import element-ui/lib/theme-chalk/index.css; // 配置 Vue 插件 Vue.use(ElementUI);文档…...

termux手机端安装mysql(MariaDB)

目录1 下载MariaDB2 配置MariaDB3 启动MariaDB服务器查看进程pid杀死进程4 登录 Mysqltermux用户登录MySQLroot用户登录MySQL5 配置 MariaDB 远程登录创建一个可远程登录的用户:用户授权:刷新授权:6 停止 MariaDB 服务器7 可选,但…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

HashMap中的put方法执行流程(流程图)

1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

Linux-进程间的通信

1、IPC: Inter Process Communication(进程间通信): 由于每个进程在操作系统中有独立的地址空间,它们不能像线程那样直接访问彼此的内存,所以必须通过某种方式进行通信。 常见的 IPC 方式包括&#…...

Flask和Django,你怎么选?

Flask 和 Django 是 Python 两大最流行的 Web 框架,但它们的设计哲学、目标和适用场景有显著区别。以下是详细的对比: 核心区别:哲学与定位 Django: 定位: "全栈式" Web 框架。奉行"开箱即用"的理念。 哲学: "包含…...

论文笔记:Large Language Models for Next Point-of-Interest Recommendation

SIGIR 2024 1 intro 传统的基于数值的POI推荐方法在处理上下文信息时存在两个主要限制 需要将异构的LBSN数据转换为数字,这可能导致上下文信息的固有含义丢失仅依赖于统计和人为设计来理解上下文信息,缺乏对上下文信息提供的语义概念的理解 ——>使用…...