0101基础-认证授权-springsecurity

news2024/9/23 5:20:44

文章目录

    • 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认证授权

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/377283.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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

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

【数据库】数据库基本概念和类型

一、数据库基本概念 1、数据 所谓数据(Data)是指对客观事物进行描述并可以鉴别的符号,这些符号是可识别的、抽象的。它不仅仅指狭义上的数字,而是有多种表现形式:字母、文字、文本、图形、音频、视频等。现在…

MAML算法详解(元学习)

文章目录回顾元学习MAML算法MAML和预训练模型的区别数学推导MAML实施细节总结回顾元学习 元学习的基本知识参考这篇博客元学习和机器学习的对比 MAML算法 学习初始化参数,所有任务的初始化的参数都是一样的 MAML和预训练模型的区别 MAML使用的是ϕ\phiϕ…

计算机网络笔记、面试八股(五)—— 浏览器输入URL

本章目录5. 从输入URL到浏览器显示页面过程中都发生了什么5.1 URL输入5.2 DNS解析5.2.1 域名的等级5.2.2 DNS解析的流程5.2.3 DNS查询方式5.3 建立TCP连接5.4 发送HTTP/HTTPS请求5.5 服务器处理请求并返回HTTP响应5.6 浏览器解析渲染页面5.7 HTTP请求结束,断开TCP连…

【C语言】“qsort函数详解”与“使用冒泡思想模拟使用qsort”

✨✨✨✨如果文章对你有帮助记得点赞收藏关注哦!!✨✨✨✨ 文章目录✨✨✨✨如果文章对你有帮助记得点赞收藏关注哦!!✨✨✨✨qsort的介绍:一、qsort函数的使用✨比较int类型数据比较字符型数据比较结构体数据冒泡思想…

2023湖北土建施工员证报考条件考试时间及报考流程 启程别

2023湖北土建施工员证报考条件考试时间及报考流程 启程别 土建施工员证是建设厅七大员中的施工员证的一种。分为土建、装饰装修、市政、设备安装。土建施工员证怎么报考等一系列相关问题启程别告诉你 施工员证报考条件 其实施工员证的报考条件没有那么复杂,基本上年…

一起学习 学习二叉树

前言 树是数据结构中的重中之重,尤其以各类 二叉树为学习的难点。一直以来,对于树的掌握都是模棱两可的状态,现在希望通过写一个关于二叉树的专题系列。在学习与总结的同时更加深入的了解掌握二叉树。本系列文章将着重介绍一般二叉树、完全二…

算法设计与分析期末考试复习(六)

分支限界法 广度优先搜索:处理某顶点时,一次性发现其所有相邻顶点,未处理顶点加入等待队列 先来先服务:队尾加入,队首离开 o 加入队列,𝑸. Enqueue( ) o 离开队列,𝑸. …

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

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

PMP支付考试费用相关介绍

只有符合支付条件(中文审核通过)的考生才能进行付费。付费流程:同意相关承诺书-填写开票信息-选择支付方式-缴费成功一、同意相关承诺书仔细查看承诺书内容,对承诺书中内容进行确认,确认无误后,勾选同意点击…

电子科技大学软件工程期末复习笔记(七):测试策略

目录 前言 重点一览 V模型 回归测试 单元测试 集成测试 重要概念 自顶向下的集成方法 自底向上的集成方法 SMOKE方法 系统测试 验收测试 α测试 β测试 本章小结 前言 本复习笔记基于王玉林老师的课堂PPT与复习大纲,供自己期末复习与学弟学妹参考用…

大数据系统自检

第一章 大数据计算系统概述 1.1 大数据计算框架概述 Hadoop Hadoop的运行过程(5个步骤?) split > map > shuffle > reduce > output Hadoop的详细运行过程?(4个大过程,6662) 创建…

CANoe TC8测试脚本的结构介绍

CANoe TC8脚本是通过vTESTstudio平台编写。每个协议(ARP\ICMPv4\IPv4\UDP\TCP\SOMEIP\DHCP)都有自己的vtt文件。每个vtt文件的测试树结构为: Test Fixture Fixture Preparation Test Case Test Case … Test Case Test Case Fixture Completion 当Test Fixture里的Test Case…

快速搭建数据驱动自动化测试框架

本文是根据吴晓华编著的《Selenium WebDriver 实战宝典》的16.2节:数据驱动框架及实战。 放在这里是为了以后有需要的时候,能够快速的搭建数据驱动自动化框架。 实现功能:成功登录qq邮箱,点击“通讯录”,新建联系人。…

漏洞复现-Billu_box

漏洞复现-Billu_box 1、确定主机IP nmap -sn 192.168.12.0/24MAC Address: 00:50:56:E9:00:06 (VMware) Nmap scan report for 192.168.12.138# 确定是192.168.12.1382、开放端口 nmap -p 1-65535 192.168.12.138 PORT STATE SERVICE 22/tcp open ssh 80/tcp open http …

C++修炼之练气期第二层——缺省参数

目录 1.缺省参数的概念 2.缺省参数的分类 全缺省参数 半缺省参数 实用场景示例 1.缺省参数的概念 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。 在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。 #inclu…

DETR(DEtection TRansforme)调试记录

下载地址: https://github.com/facebookresearch/detr 调试过程开始了 环境配置 我们依旧使用的是NVIDIA T4 GPU 服务器 创建conda环境 conda create -n detr python3.8conda install pytorch1.12.1 torchvision0.13.1 torchaudio0.12.1 cudatoolkit11.3 -c pyto…

Spring Boot 3.0系列【1】开篇之Spring Boot 3.0 版本新特性

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot版本:3.0.3 文章目录导读Spring Boot 简介简要发展史核心功能Spring Boot 3.0 新特性JDK 版本要求(重点)GraalVM 本地镜像支持(重点&am…

RPC编程:Hessian RPC一个老的RPC框架(一)

RPC编程:Hessian RPC一个老的RPC框架一:Hessian RPC1:Hession RPC一个老的RPC框架2:老,为什么还要研究?3:Hession RPC概念二:Hessian RPC设计思想1:Hession依赖于服务器2…

卡方检验

一、卡方检验假设检验的一种,以实际观测值与期望值之间的偏离程度,解决是服从某个构成比率和是否具有相关性的问题。其偏离程度决定卡方值的大小,卡方值越小,偏差越小,实际值越趋于符合期望值。二、步骤在显著性为α0.…