【Spring security】【pig】Note01-pig登录验证过程

🌸🌸 pig 登录验证 🌸🌸

pig后端源码

一、大概执行顺序,便于理解

  • pig
    在这里插入图片描述
  • spring-security
    在这里插入图片描述

二、配置过滤器

  • 配置SecurityFilterChain
    在这里插入图片描述

三、执行过程分析

  1. 请求拦截:

    • 当客户端发送请求时,Spring Security 的过滤器链会首先拦截该请求。过滤器链中的每个过滤器都会依次处理请求。
      在这里插入图片描述
  2. SecurityContextHolder 初始化:

    • SecurityContextHolder 是一个静态容器,用于存储当前的安全上下文信息,包括当前的认证对象 Authentication。在请求开始时,SecurityContextHolder 通常是空的。
  3. 认证请求过滤:

    • 请求到达 UsernamePasswordAuthenticationFilter 或其他自定义认证过滤器。这个过滤器会捕获提交的用户名和密码,并准备将request转换为一个 UsernamePasswordAuthenticationToken
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
  4. 🌸🌸 AuthenticationManager 认证: 🌸🌸

    • 这里是最重要的认证授权部分,使用AuthenticationProviderAuthenticationConverter组装token
    • UsernamePasswordAuthenticationToken 会被传递给 AuthenticationManager 进行认证。AuthenticationManager 通常会委托给 ProviderManager 来处理。
    • ProviderManager 会迭代一组 AuthenticationProvider 实现来进行实际的认证。最常见的实现是 DaoAuthenticationProvider,它会使用 UserDetailsService 来加载用户详细信息并进行验证。
      在这里插入图片描述
      在这里插入图片描述
  • 自定义模式认证转换器-密码认证转换器
    • OAuth2ResourceOwnerBaseAuthenticationConverter-OAuth2ResourceOwnerPasswordAuthenticationConverter
    • 通过checkParams()support()buildToken()request转换为自定义的token:Authentication,如:OAuth2ResourceOwnerPasswordAuthenticationToken
      在这里插入图片描述
  • 自定义授权-处理用户名密码授权
    • OAuth2ResourceOwnerBaseAuthenticationProvider-OAuth2ResourceOwnerPasswordAuthenticationProvider
    • AuthenticationProvider拿到转换的token,使用AuthenticationManager进行验证
      在这里插入图片描述
  • 自定义授权模式抽象-密码授权token信息
    在这里插入图片描述
  1. UserDetailsService 加载用户信息:

    • UserDetailsService 从数据库或其他持久化存储中加载用户信息,并返回一个 UserDetails 对象。这个对象包含了用户名、密码、权限等信息。
      • 这里使用PigUserDetailsService extends UserDetailsService
    • DaoAuthenticationProvider 然后会比较提交的密码和 UserDetails 中存储的密码(通常会进行加密或哈希比较)。
      • 这里使用 PigDaoAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider,重载了一些方法,如additionalAuthenticationChecks()自定义密码验证,retrieveUser()获取人员,createSuccessAuthentication()成功后创建Authentication
        • 父级的AbstractUserDetailsAuthenticationProvider implements AuthenticationProvider
          在这里插入图片描述
          在这里插入图片描述
          在这里插入图片描述
  2. 成功认证:

    • 如果认证成功,AuthenticationManager 会返回一个已认证的 Authentication 对象,并将其存储在 SecurityContextHolder 中。
    • 此处构建OAuth2AccessToken,OAuth2RefreshToken,详情查看这篇文章:token令牌生成(generate)过程
    • UsernamePasswordAuthenticationFilter 处理成功后,会将认证信息存储到 SecurityContext 中,并继续处理请求链。
    • 客户端通常会收到一个 token 或其他形式的认证令牌,用于后续请求的认证。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
  3. 失败处理:

    • 如果认证失败,AuthenticationManager 会抛出一个 AuthenticationException
    • UsernamePasswordAuthenticationFilter 会捕获异常并调用配置的 AuthenticationFailureHandler 来处理认证失败的情况,通常返回 401 未授权响应。
      在这里插入图片描述
  4. 访问受保护资源:

    • 在后续请求中,客户端会使用之前收到的认证令牌。
    • SecurityContextPersistenceFilter 会检查 SecurityContextHolder,并确保上下文中包含认证信息。
    • AbstractSecurityInterceptor 会拦截受保护的资源请求,检查用户的权限。如果用户有权限访问资源,请求会被允许通过;否则,将返回 403 禁止访问响应。

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

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

相关文章

Nginx反向代理与负载均衡:让网站像海豚一样灵活

引言:"当网站遇上海豚:Nginx让数据流动更流畅!"想象一下,你的网站是一片繁忙的海域,而Nginx就像一群聪明的海豚,它们不仅能够迅速地找到最佳的捕食路线(反向代理)&#xf…

下载ubantu镜像,windows怎么复制文本到虚拟机 ubantu

目录 下载ubantu镜像 安装ubantu 开启共享剪贴板 允许root用户登录 下载ubantu镜像

Kubernetes——Pod详解

目录 一、Pod基础概念 1.概念 2.使用方式 3.Pause容器 3.1网络 3.2存储 4.Pod容器分类 4.1自主式Pod 4.2控制器管理的Pod 二、Pod的分类 1.基础容器(infrastructure container) 2.初始化容器(initcontainers) 2.1Ini…

如何找到免费的jupyter平台

第一步:在fofa找到大量的jupyter平台,部分平台会存在未授权漏洞,我们可以通过访问这个url查看是否可以使用(如何使用fofa请查看其它博文)。 第二步:使用python脚本快速访问下载后的目的url,测试…

CR80清洁卡都能用在什么地方?

CR80清洁卡(也被称为ISO 7810 ID-1清洁卡)的规格确实使其在各种需要读取磁条或接触式智能卡的设备中都有广泛的用途。这些设备包括但不限于: ATM自动终端机:当ATM机的磁条读卡器出现故障或读卡不灵敏时,可以使用CR80清…

Python 渗透测试:MySQL 数据库 弱密码测试.(3306 端口)

什么是 MySQL 数据库 MySQL 是一种开源的关系型数据库管理系统(RDBMS)。它是目前世界上最流行的数据库之一,被广泛应用于各种类型的网站和应用程序中。MySQL 数据库爆破是一种非法和危险的黑客攻击手段。它指的是通过暴力猜测密码的方式,试图获取未授权访问 MySQL 数据库的行为…

【qt】下拉列表组件

下拉列表组件 一.Combo Box1.可以直接双击编辑下拉内容2.代码初始化下拉内容3.一次性添加多个下拉内容4.下拉框手动编辑5.下拉内容添加附加值6.下拉添加图标7.获取下拉值 二.总结 一.Combo Box 还是老样子,咱们边做边练 目标图: 1.可以直接双击编辑下…

vue中动态路由

动态路由主要为了解决路由权限的问题,即确保每个用户登录后返回的菜单都是不同的,这取决于他们的权限级别。相较于静态路由,动态路由更加灵活,能够适应权限的变更,如新增或删除权限,而无需进行重复维护。 …

存储+调优:存储-Cloud

存储调优:存储-Cloud Master Server 配置: IP192.168.1.254 useradd mfs tar zxf mfs-1.6.11.tar.gz.gz cd mfs-1.6.11 ./configure --prefix/usr --sysconfdir/etc --localstatedir/var/lib --with-default-usermfs --with-default-groupmfs --disabl…

掌握一个面试小心机,就业离你只差这一步!

马上进6月份,大家是已经在工作岗位上了,还是正在面试呀!不知道大家在面试过程中有没有遇到这样的问题,面试完几家公司之后进行总结,还是不知道自己为什么被pass掉,今天小编带大家搞清测试岗位面试的底层逻辑…

成为领导心腹:测试新人如何提高影响力?

作为一名新入行的测试人员,如何提高自己在工作中的影响力呢? 可能有人会问了:“测试人员不是只要安分守己的做好自己的测试工作不就行了吗?又不是当管理者,为什么要提高影响力呢?” 说实话,我…

【C++】学习笔记——二叉搜索树

文章目录 十四、二叉搜索树1. 二叉搜索树的概念2. 二叉搜索树的实现查找插入中序遍历删除拷贝构造析构函数赋值重载完整代码 3. 二叉搜索树的应用K搜索模型KV搜索模型 未完待续 十四、二叉搜索树 1. 二叉搜索树的概念 二叉搜索树又称二叉排序树,它或者是一棵空树&…

同旺科技 FLUKE ADPT 隔离版发布 ---- 2

所需设备: 1、FLUKE ADPT 隔离版 内附链接; 应用于:福禄克Fluke 12E / 15BMax / 17B Max / 101 / 106 / 107 应用于:福禄克Fluke 15B / 17B / 18B 正面: 反面: 侧面: 开孔位置(可…

面试八股之MySQL篇4——事务篇

🌈hello,你好鸭,我是Ethan,一名不断学习的码农,很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 🏃人生之义,在于追求,不在成败,勤通…

react组件中的共享数据

在前面的示例中,每个 MyButton 都有自己独立的 count,当每个按钮被点击时,只有被点击按钮的 count 才会发生改变: 然而,你经常需要组件 共享数据并一起更新。 为了使得 MyButton 组件显示相同的 count 并一起更新&…

【MySQL精通之路】InnoDB(6)-磁盘结构(3)-表空间

主博客: 【MySQL精通之路】InnoDB(6)-磁盘上的InnoDB结构-CSDN博客 上一篇: 【MySQL精通之路】Innodb-索引-CSDN博客 下一篇: 【MySQL精通之路】InnoDB-双写缓冲区-CSDN博客 目录 1 系统表空间 1.1 调整系统表空间的大小 1.1.1 增加 1.1.2 减小…

四川邮电职院领导访知了汇智,深化AI专业教育与行业对接

5月16日,四川邮电职业技术学院信息工程学院软件教研室的领导团队莅临我司,就人工智能专业建设进行深入的交流与学习。我司总经理、副总经理等高层领导亲自接待,对学院领导一行的到来表示了热烈的欢迎,并全程陪同参观了公司的核心区…

【技术实操】中标麒麟高级服务器操作系统实例分享,rsync数据同步配置方案

1.rsync介绍 rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份工具。 在守护进程模式(daemon mode)下,rsync默认监听TCP端口873,以原生rsync传输协议或者通过远程shell如RSH或者SSH提供文件。SS…

几个模型介绍

1. Diffusion Models 简介: Diffusion models是一类生成模型,通过将数据逐渐引入噪声并学会逆向过程,从噪声生成数据。这些模型近年来在图像生成领域取得了显著的进展,例如Denoising Diffusion Probabilistic Models (DDPM)和Score-Based Ge…

基于BERT的中文情感分析实战

数据与代码链接见文末 bert开源项目解读:谷歌开源项目BERT源码解读与应用实例-CSDN博客 基于BERT的中文命名实体识别识别实战:基于BERT的中文命名实体识别识别实战-CSDN博客 1.数据 在data目录下,提供了中文情感分析的数据, 类别1代表正向情感,类别2代表负向情感。