【穿针引线】基于ElAdmin项目论Spring Security的工作原理,实现前后端OAuth2单点登录,源码分析

news2024/11/19 14:25:21

【穿针引线】基于ElAdmin项目论Spring Security的工作原理,源码分析

  • 一、核心类
    • 1.1 SecurityContext 安全上下文
    • 1.2 网安适配器WebSecurityConfigurerAdapter
    • 1.3 认证器 Authentication
    • 1.4 信息认证提供者
      • 1.4.1 抽象用户信息认证提供者 AbstractUserDetailsAuthenticationProvider
      • 1.4.2 数据库认证提供者DaoAuthenticationProvider
      • 1.4.3 用户信息服务 UserDetailsService
    • 1.5 用户相关
      • 1.5.1 用户信息 UserDetails
      • 1.5.2 用户信息检查器 UserDetailsChecker
    • 1.6 密码编码器
      • 1.6.1 拥有的加密类种类
      • 1.6.2 Hash加密编码器BCryptPasswordEncoder
      • 1.6.3 裸加密编码器NoOpPasswordEncoder
  • 二、传输和存储的加解密方式
    • 2.1 传输加解密
    • 2.2 存储加解密
  • 三、登录流程
  • 四、前后端OAuth2单点登录

在做单点登录功能时,在这篇文博客中分析过CAS方式登录源码,关注的是认证和授权函数,其实思想都是大同小异。在这篇博客中,基于Spring Security框架的核心类和思想进行认证和授权的源码分析,做到说透讲透。

在这里插入图片描述

一、核心类

1.1 SecurityContext 安全上下文

1.2 网安适配器WebSecurityConfigurerAdapter

1.3 认证器 Authentication

在这里插入图片描述

1.4 信息认证提供者

1.4.1 抽象用户信息认证提供者 AbstractUserDetailsAuthenticationProvider

1.4.2 数据库认证提供者DaoAuthenticationProvider

在这里插入图片描述
retrieveUser

额外身份认证
additionalAuthenticationChecks

1.4.3 用户信息服务 UserDetailsService

在这里插入图片描述
loadUserByUsername

1.5 用户相关

1.5.1 用户信息 UserDetails

1.5.2 用户信息检查器 UserDetailsChecker

DefaultPreAuthenticationChecks

1.6 密码编码器

1.6.1 拥有的加密类种类

在这里插入图片描述

1.6.2 Hash加密编码器BCryptPasswordEncoder

1.6.3 裸加密编码器NoOpPasswordEncoder

二、传输和存储的加解密方式

2.1 传输加解密

2.2 存储加解密

三、登录流程

四、前后端OAuth2单点登录

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

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

相关文章

01-C++-VSCode配置C++环境(windows)

VSCode配置C环境 前言安装VSCode安装mingw编译器VSCode配置C环境 前言 本篇来学习写使用VSCode配置C环境 安装VSCode 下载地址:VSCode 下载后路next安装即可 安装mingw编译器 下载地址:mingw64 点击Files 向下拉,点击下载(建议windows6…

Python系列之字符串和列表

感谢点赞和关注 ,每天进步一点点!加油! 目录 一、字符串 1.1 字符串的定义与输入 1.2 字符串的拼接与格式化输出 1.3 字符串的下标 1.4 字符串的切片和倒序 1.5 字符串的常见操作 二、列表-List 2.1 列表的常见操作 2.2 列表合并和拼…

【云原生-深入理解Kubernetes-2】容器 Linux Cgroups 限制

文章目录 系列文章目录👹关于作者回顾一、Docker Engine 和 Hypervisor 区别二、容器比虚拟机受欢迎?优势劣势 三、Linux Cgroups 限制使用 Cgroups 子系统配置文件- 前提知识- 限制 ✊ 最后 系列文章目录 【云原生-深入理解Kubernetes-1】容器的本质是进…

一文理解RocketMQ

概述 RocketMQ是阿里开发的基于JMS的分布式消息中间件,是由纯JAVA实现的。放弃了比较重量级的Zookeeper作为注册中心,使用自研的NameServer实现元数据的管理,支持事务消息,顺序消息,批量消息,定时消息以及消…

软件体系结构复习题

2020 论述题 统一软件过程RUP:用例驱动、以架构为中心的迭代增量开发 一个用例可能需要多个功能来实现,一个功能也可能被用于多个用例 边界类、控制类、实体类 顺序图、通信图、定时图、交互概述图 扩展关系《extend》、包含关系《include》、…

python将图片批量排版插入Word文档

今天分享一个将图片批量插入word文档的小脚本,本脚本可以实现 jpg\png图片,可以混合在一起! 首先 我们需要设置每页word文档的排版需求,如:每页6张图片,一共是3行2列 pics_per_page 6,这是每页…

解说天下之操作系统

解说天下之操作系统 本文由桌案drawon (https://www.drawon.cn),云晶(https://www.yunjingxz.com)创始人根据多年从业经验, 从操作系统的起源,应用分类, 设计分类,以及资源使用角度对操作系统进…

leetcode 数据库题 175~185

leetcode 数据库题 175. 组合两个表176. 第二高的薪水177. 第N高的薪水178. 分数排名180. 连续出现的数字181. 超过经理收入的员工182. 查找重复的电子邮箱183. 从不订购的客户184. 部门工资最高的员工185. 部门工资前三高的所有员工小结 嗯。。。数据库题目就不贴原题内容了&…

00后是真卷不过,工作没两年,跳槽到我们公司起薪20K都快接近我了

在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事,可遇不可求,向他学习还来不及呢。 真正让人反感的,是技术平平&…

cocosCreator自动化打包工具

前言: 使用nodeJs脚本化Cocos Creator自动化构建、编译。 版本:cocosCreator2.4.5。 简述:使用自动化构建-编译工具前提,你终端上配置了相关的环境,比如JDK、NDK、SDK(对于原生平台)&#xff0c…

Express实战个人订阅号实现网站登录

今天我们来实现一个使用个人订阅号实现网站的功能,后端使用的是 express 。其它框架原理基本一致,只是定义路由或返回响应数据部分代码跟 express 有所出入。先来一波效果图: 1. 前言 20 年 3 月在掘金写过一篇文章,介绍了使用 e…

使用cmake 构建构建新项目的时候,编译提示库找不到怎么办?

昨天帮其他部门同事解决Linux下Qt编译找不到Qt 依赖库 core的问题。过程很有特征性,可以推广到Linux下使用cmake构建项目时找不到库文件的广泛性问题。 先上图,结合事情经过讲述: 事情经过: 这里给大家介绍第一个重点&#xff1…

秘塔写作猫

秘塔写作猫是集AI智能写作、多人协作、改写润色、文本校对等功能为一体的AI原生创作平台,可以帮助不同群体大幅提升写作效率和生产力。 接下来小编就带大家了解一下该软件具体的一些功能,不论你是学生、上班族还是自媒体从业者等,该工具绝对可…

箭头函数与普通的函数有什么区别-M

箭头函数与普通的函数有什么区别 1、写法不同 在 js 中,像命名式函数、函数表达式都称为普通函数。对于普通函数,需要用function关键字来声明。而箭头函数则不需要使用function关键字,在箭头前面的括号里面写参数,后面的大括号里…

Linux 安装MySQL-5.7.30

1.官网下载MySQL 进入官网https://www.mysql.com/ 从下载页面下载社区版本其中社区版本免费,免费的午餐不提供技术支持. 页面中MySQL Enterprise Edition是企业版,企业版收费但是会提供技术支持, 点击图中红框下载社区版本 选择Download Arc…

AC,AP以及三阶段项目

特点:access:连接终端设备 只能通过1个vlan trunk:交换机与交换机相连 可以通过多个vlan 共同特点:交换机的端口收发数据的规则: 收:如果收到的数据,没有携带任何标签,则使用该端口…

01SpringCloudRibbon负载均衡

Ribbon负载均衡 Ribbon Eureka帮我们集成了负载均衡组件:Ribbon,简单修改代码即可使用。 什么是Ribbon:客户端负载均衡组件 开启负载均衡 1、Eureka中已经集成了Ribbon,所以我们无需引入新的依赖,直接修改代码。 2、…

Redis的主从集群搭建与配置

文章目录 Redis主从集群模式搭建过程分级管理容灾冷处理 Redis主从集群模式 Redis的集群模式 主从复制模式:利用主从复制原理,一主多从架构。读写分离,主节点可读可写,从节点只能提供读服务。哨兵模式:哨兵实现了自动化…

Vue 3 + Element Plus 简单用法

Element Plus: A Desktop UI toolkit for Vue.js 即 Vue 桌面 UI 工具包 基于 Vue 2 的组件库和基于 Vue 3 的组件库安装方法不同,基于 Vue 3 的组件库叫做 Element Plus。 MDBootstrap 与 Element UI 区别: MD Bootstrap vs ElementUI: W…

如何在金融企业推进故障演练?中国人寿分阶段实践总结

一分钟精华速览 越来越多企业正在通过故障注入和演练的方式提升系统可靠性,这其中金融行业的应用较为特殊。一方面其可靠性要求比非涉账类系统更高;另一方面金融行业有更加严格的监管要求,如客户、账目等信息都有严格约束。加之金融系统较其…