springsecurity 获取token流程分析

2023-11-07

# 一、/oauth/token

password模式获取token源码主要操作

1、定义请求参数

在这里插入图片描述

增加请求头 Authorization 否则 在请求参数使用 client_id (注意! 此头为base64拼接格式为 client_id:client_secret)
在这里插入图片描述

2、下下为重点执行代码处

若定义Authorization头则进入

1、org.springframework.security.web.authentication.www.BasicAuthenticationFilter#doFilterInternal

在这里插入图片描述
使用client_id,client_secret 请求param 则进入
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter#doFilter
在这里插入图片描述

2、org.springframework.security.web.access.intercept.FilterSecurityInterceptor#invoke

在这里插入图片描述

3、org.springframework.web.method.support.InvocableHandlerMethod#invokeForRequest

在这里插入图片描述

4、org.springframework.security.oauth2.provider.endpoint.TokenEndpoint#postAccessToken

在这里插入图片描述

5、org.springframework.security.oauth2.provider.token.AbstractTokenGranter#getAccessToken

在这里插入图片描述

6、org.springframework.security.oauth2.provider.password.ResourceOwnerPasswordTokenGranter#getOAuth2Authentication

在这里插入图片描述

org.springframework.security.authentication.ProviderManager#authenticate

在这里插入图片描述

此处选择 provider方式 根据 传入的Authentication而决定 可自定义 实现 AbstractAuthenticationToken(此抽象类实现Authentication copy password模式Ganter 切记自定义token构造器加上 super.setAuthenticated(true);)
在这里插入图片描述

7、org.springframework.security.oauth2.provider.token.DefaultTokenServices#createAccessToken(org.springframework.security.oauth2.provider.OAuth2Authentication, org.springframework.security.oauth2.common.OAuth2RefreshToken)

在这里插入图片描述

有增强 TokenEnhancer 就进入增强器

自此最后返回org.springframework.security.oauth2.provider.endpoint.TokenEndpoint#getResponse

.oauth2.provider.endpoint.TokenEndpoint#getResponse

在这里插入图片描述
最后补充AuthorizationServerTokenServices,SecurityConfigurerAdapter<DefaultSecurityFilterChain, HttpSecurity> ,AuthenticationProvider,AbstractTokenGranter,AbstractAuthenticationProcessingFilter 还有好多就不一一列举了都可以自己扩展实现自己的逻辑加油!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springsecurity 获取token流程分析 的相关文章

随机推荐

  • 最大股票收益问题(数组最大差问题)

    最大股票收益问题 数组最大差问题 问题描述 给定一个数组 存储着按照时间排序的股票价格 第 i i个位置的元素为第ii次交易时的股票价格 现假设只允许你进行一次买 然后在某一时刻卖出 单只股票 请设计算法 求解你可能获得的最大收益 如果股价
  • Windows下安装Redis

    打开redis中文官方网站 发现都需要安装在linux上 Windows版本的前往github上下载 地址 https github com microsoftarchive redis releases 由于需要外网比较难下载 所以放一个
  • 使用Fragment实现底部菜单的切换

    在做android项目的时候 经常会遇到底部有几个菜单 点击之后 页面上面部分需要展示不同的内容 如下图 在我的这个例子里面 采用了Fragment来展示点击下面菜单之后的不同数据 开发步骤 1 分析页面布局 页面分成底部菜单和上面的展示区
  • 哈工大计算机网络MOOC作业题解答

    第一周 如图所示网络 A在t 0时刻开始向C发送一个2Mbits的文件 B在t 0 1 e秒 e为无限趋近于0的小正实数 向D发送一个1Mbits的文件 忽略传播延迟和结点处理延迟 请回答下列问题 如果图中网络采用存储 转发方式的报文交换
  • conda SSL错误 SSLError,爬虫应用总结

    1 conda SSL错误 SSLError Can t connect to HTTPS URL because the SSL module is not available 解决办法 使用conda环境来运行爬虫程序 因为无法使用电脑
  • 通过小皮面板启动后端php项目和数据库

    1 启动php项目开启后端网站 可去官网下载 下载后就能使用了 官网地址 小皮面板 phpstudy 让天下没有难配的服务器环境 下载完成后打开 php项目需要启动apache或nginx 目前我用的是nginx 可以更改一些配置 先下载后
  • Linux 定期清理内存脚本

    bin bash 清理内存脚本 释放 PageCache echo echo 1 gt proc sys vm drop caches sudo sh 释放 dentries 和 inodes echo echo 2 gt proc sys
  • 5个用于图像处理的Python库

    图像处理是操纵图像以从中提取特征的现象 在当今计算机视觉和深度学习的世界中 大量使用不同的图像处理算法对图像数据集进行边缘检测 识别和分类 有时 这些算法也会逐帧应用于视频 以从中提取特征 在今天的文章中 我们将介绍5个最好的Python库
  • 如何计算单个region server能支持的最大region数

    虽理论上说单个region server能支持最多1000个region 但实际上是不太可能的 RegionServer维护Master分配给它的region 处理对这些region的IO请求 负责切分在运行过程中变得过大的region r
  • git提交代码弹出windows安全中心

    不知道有没有uu和我一样 第一次用git提交代码到码云时 前面都挺好的 突然最后一步来个windows安全中心 我就上网搜 说啥都都有 就是一个用户名密码呗 我想 然后按照网上的方法是github的用户名和密码 我当时还奇怪了这和githu
  • Java设计模式——状态模式

    文章目录 介绍状态模式 状态模式 介绍状态模式 核心思想就是 当对象的状态改变时 同时改变其行为 也就是行为由其状态决定 介绍 意图 允许对象在内部状态发生改变时改变它的行为 对象看起来好像修改了它的类 主要解决 对象的行为依赖于它的状态
  • Java中的8种基本数据类型

    Java基本类型共有八种 基本类型可以分为三类 字符类型char 布尔类型boolean以及数值类型byte short int long float double 数值类型又可以分为整数类型byte short int long和浮点数类
  • 梯度下降算法对比

    损失函数为凸函数时 梯度下降一定可以得到全局最优解
  • Linux shell 暂停执行脚本

    bin bash current path pwd echo 当前路径 current path echo webapps path current path webapps echo 当前路径webapps子目录 webapps path
  • 玩具城

    官园小商品批发市场 路线 地铁2号线 车公庄 红桥市场路线 地铁5号线 天坛东门 来自 ITPUB博客 链接 http blog itpub net 118838 viewspace 625828 如需转载 请注明出处 否则将追究法律责任
  • 【系统】win11怎么退回win10

    根据微软官方提供的回滚方案显示 在升级Win11之后的10天之内 用户可以通过系统恢复选项将Win11还原Win10 操作方式也比较简单 大家可以打开系统设置 找到相应选项 选择并确认后即可轻松将Win11回退早期版本 详细操作步骤如下 一
  • C++学习(四六六)Multiple parse contexts are available for this file

    Note Multiple parse contexts are available for this file Choose the preferred one from the editor menu 参考 Multiple parse
  • Linux基础篇学习——常见系统命令:ls,pwd,cd,date,hwclock,passwd,su,clear,who,w,uname,uptime,last,dmesg,free,ps,top

    ls 显示指定目录中的内容 ls OPTION FILE OPTION a all 显示所有文件包括隐藏文件 l 列出长属性 显示出文件的属性与权限等数据信息 i 列出inode节点号 结合 l使用 d 显示目录本身 且不列出目录中的列表文
  • MD5算法分析及逆向详解

    题外话 最近在看加密与解密 看到加密算法部分 感觉对于初次接触的新手还是有些难度的 故写下该篇文章 算作一个引导吧 新手飘过 老鸟勿笑 基本原理 MD5的典型应用是对一段信息 Message 产生信息摘要 Message Digest 以防
  • springsecurity 获取token流程分析

    一 oauth token password模式获取token源码主要操作 1 定义请求参数 增加请求头 Authorization 否则 在请求参数使用 client id 注意 此头为base64拼接格式为 client id clie