Spring Security oauth2(二)使用get方式请求oauth2默认的认证接口/oauth/token

2023-05-16

在我们上篇文章中,我们作为快速入门
pring Security oauth2(一)快速入门,搭建授权服务器
讲了4中授权模式,接下来的篇章中,我们将会逐步的去一个一个问题解决,并且去扩展
接下来我们将要解决的第一个问题,就是关于于oauth2默认的认证接口。

1.观察oauth2认证接口地址

观察我们的每一种授权模式的请求地址。我们不难发现,请求地址就是如下两个。
授权码模式,我们请求了如下地址
http://127.0.0.1:8080/oauth/authorize
http://127.0.0.1:8080/oauth/token
简化模式
http://127.0.0.1:8080/oauth/authorize
客户端模式
http://127.0.0.1:8080/oauth/token
密码模式
http://127.0.0.1:8080/oauth/token
而当我们项目启动的时候,我们也能看到如下信息
在这里插入图片描述
这个"/oauth/token"地址是不是特别熟悉?并且为什么我们非得去请求这个接口。显然是框架给我们写好了这个接口呗,然后我们去访问这个接口,他帮我们来认证。

2.认识TokenEndpoint类

该类的全路径地址如下

org.springframework.security.oauth2.provider.endpoint.TokenEndpoint

在这里插入图片描述

进来第一个疑问,frameworkendpoint 是什么啊?

2.1.@frameworkendpoint 的作用?

@Controller的同义词,但仅用于框架提供的端点(因此它永远不会与用@Controller定义的用户自己的端点冲突)。
与@RequestMapping和所有其他@Controller功能一起使用
所以我们为了方便看代码,就把@frameworkendpoint当作@Controller来看待,差不多用于提供mvc接口的注解。

2.2.get方式可以请求/oauth/token吗?

相信进来一看,粗布一看,有get请求,和post请求,心里可能犯嘀咕,为啥之前的入门中,作者非得用post,而不用get请求,TokenEndpoint不是提供了get方式吗?
现在我们尝试下用get来请求会发生什么?
在这里插入图片描述
在这里插入图片描述
好家伙,直接提示了不支持。神奇不?

仔细分析下,get请求接口是如何写的
在这里插入图片描述
仔细看源代码,源码中定义了一个allowedRequestMethods集合,里面放了post请求方式,
然后在get请求的时候,判断allowedRequestMethods中有没有get请求方式,如果没有get,则抛出异常,不支持get,如果支持则转入post方式进行请求。

2.3.设置get方式请求/oauth/token

通过观察上述代码,我们知道了不支持get方式请求,是因为allowedRequestMethods里面只有post。如果我们在allowedRequestMethods中添加get方式,就可以了。
在我们的认证服务器中,注入tokenEndpoint,并且修改tokenEndpoint的

	@Autowired
	private TokenEndpoint tokenEndpoint;
	/**
	 * @Description:对@RequestMapping(value = "/oauth/token", method=RequestMethod.GET)的方法进行get方法支持
	 * @author:hutao
	 * @mail:hutao_2017@aliyun.com
	 * @date:2021年4月23日
	 */
    @PostConstruct
    public void reconfigure() {
        Set<HttpMethod> allowedMethods =new HashSet<>(Arrays.asList(HttpMethod.GET, HttpMethod.POST));
        tokenEndpoint.setAllowedRequestMethods(allowedMethods);
    }

在这里插入图片描述

2.4.测试使用get和post方式请求/oauth/token

浏览器get请求
在这里插入图片描述
postman get请求
在这里插入图片描述
postman post请求
在这里插入图片描述

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

Spring Security oauth2(二)使用get方式请求oauth2默认的认证接口/oauth/token 的相关文章

随机推荐

  • 嵌入式学习项目实战 --- 在线词典

    目录 一 前言 二 项目功能 三 程序流程 1 客户端 2 服务器 四 代码实现 1 客户端代码 2 服务器代码 3 Makefile 一 前言 本文学习自 华清远见 的一个开源嵌入式项目在线词典综合实战 xff0c 涵盖了网络编程 文件I
  • hexo博客的制作

    安装Hexo 首先来看看我的hexo的博客演示 地址 xff1a http 91lyj xyz 我的ssm博客地址 xff1a www iclyj cn a target blank href http 91lyj xyz http 91l
  • win10系统CUDA10.0安装教程(for tensorflow2.0)

    前言 xff1a 目前最新的CUDA版本是10 1 xff0c 但是出于某种神秘的原因 xff0c 目前tensorflow2 0仅支持CUDA10 0 这个已经在我的电脑与一部分网友的反馈中得到了证实 tensorflow2 0不仅绑定了
  • 数学学习——Borel-Cantelli 引理证明

  • linux中的设备名称和设备号

    看赵炯博士的 linux 0 11 源代码注释 已经两三周了 xff0c 从今天起开始将一些个人总结和感悟分小标题写出来 xff0c 聊作记忆以供后来查看 在linux0 11源码的 linux boot bootsect s中 xff0c
  • python学习——numpy savetxt 追加模式

    因为savetxt的第一个参数f xff0c 可以是file handle xff0c 也可以是file name 所以用以下的这个代码就可以 xff1a span class token keyword with span span cl
  • 量化投资学习——A股H股套利年化100%

    一 交易对象选取 首先是选取数据 xff0c 选取数据的来源是wind xff1a 从wind中的交易数据 AH比较 里面可以看到历史收盘价和A H溢价率 xff0c 考虑到在2008年金融危机之后 xff0c 全球市场发生了较大的变化 x
  • C++学习——介绍一些C++内存检测工具

    1 C C 43 43 内存治理神器 Google Sanitizers Santizers是由Google开发的开源工具 xff0c 集成在LLVM项目中 xff0c 来检查内存泄漏和其他内存错误 Sanitize工具是一组用于检测内存错
  • C++学习——如何增加堆栈大小来避免内存分配的问题

    为了避免程序在运行过程中内存分配不足的问题 xff0c 你可以增加程序分配的内存量 在CMake中 xff0c 你可以通过在CMakeLists txt文件中添加设定来实现 你可以通过添加以下代码来增加程序分配的内存量 xff1a set
  • C++学习——解决一个double free or corruption (!prev)错误

    在我的场景下 xff0c 出现问题的地方是一个for循环 xff0c 代码如下所示 xff1a span class token keyword for span span class token punctuation span span
  • 量化投资学习——股指期货研究(九)

    基差增强策略的增强相对收益一般使用两种方法计算 xff1a 第一种是股指期货与现货收敛造成的期货价格相对指数价格上涨的部分 xff0c 此时关注的指标为年化基差率 xff0c 方法为计算期指合约收益率与指数收益率之差 xff1b 第二种是考
  • opencv无法打开源文件opencv2/opencv.hpp文件

    今天在使用vs2015配置OpenCV的时候遇到了这个问题 xff1a 无法打开 源 文件 34 opencv2 opencv hpp 34 解决方式 xff1a 前面都已经将Opencv的路径配置完毕后 xff0c 将Debug的默认 8
  • 简述计算机三大变换的联系和区别 (傅里叶变换 拉普拉斯变换 z变换)

    Q 简述计算机三大变换的联系和区别 傅里叶变换 拉普拉斯变换 z变换 xff08 1 xff09 傅里叶变换定义 xff1a 表示能将满足一定条件的某个函数表示成三角函数 xff08 正弦和 或余弦函数 xff09 或者它们的积分的线性组合
  • python数据处理——按列名选取dataframe的多列

    这是一个经常遇到的问题了 xff0c 但是为什么专门拿出来写一个博客呢 xff0c 因为啊 xff0c 博主啊博主 xff0c 你太笨了 xff0c 总是忘 xff01 最后一次啊 xff0c 不能再忘了 xff01 data 39 w 3
  • python数据处理——取dataframe的一列或一行

    df 39 w 39 选择表格中的 39 w 39 列 xff0c 使用类字典属性 返回的是Series类型 df w 选择表格中的 39 w 39 列 xff0c 使用点属性 返回的是Series类型 df 39 w 39 选择表格中的
  • linux shell使用经验

    今天突然对python心血来潮 xff0c 网上搜了篇学习笔记在看 ubuntu中练习了一下 xff0c 无意中注意到一个关于shell语言的基本通用规则 刚开始学习bash的时候也注意到了 xff0c 最简单的bash程序一般也会有三行
  • 量化投资学习——因子IC、IR的介绍

    因子IC IR的介绍 xff1a IC即信息系数 xff08 Information Coefficient xff09 xff0c 表示所选股票的因子值与股票下期收益率的截面相关系数 xff0c 通过 IC 值可以判断因子值对下期收益率的
  • debian,ubuntu,redhat,centos区别及联系&&yum,apt-get区别及联系

    debian xff1a 图形化界面 xff0c 体积小 xff0c 稳定性最高 xff0c 安装包丰富 xff0c 文档相对较少 xff0c 但是适用于低配置的vps xff0c 128M内存就可以流畅运行debian xff0c 使用a
  • openswitch虚拟机安装方法

    Openswitch虚拟机安装 1 安装VMware xff0c 并且创建一个Ubuntu16 04虚拟机 xff0c 详见openswitch编译指南 2 在开启虚拟机之前 xff0c 打开虚拟化选项 虚拟机 设置 处理器 勾选 虚拟化I
  • Spring Security oauth2(二)使用get方式请求oauth2默认的认证接口/oauth/token

    在我们上篇文章中 xff0c 我们作为快速入门 pring Security oauth2 xff08 一 xff09 快速入门 xff0c 搭建授权服务器 讲了4中授权模式 xff0c 接下来的篇章中 xff0c 我们将会逐步的去一个一个