基于Spring Security 6的OAuth2 系列之二 - 客户端--非代码演示授权码模式

之所以想写这一系列,是因为之前工作过程中使用Spring Security OAuth2搭建了网关和授权服务器,但当时基于spring-boot 2.3.x,其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0,结果一看Spring Security也升级为6.3.0。无论是Spring Security的风格和以及OAuth2都做了较大改动,里面甚至将授权服务器模块都移除了,导致在配置同样功能时,花费了些时间研究新版本的底层原理,这里将一些学习经验分享给大家。

注意由于框架不同版本改造会有些使用的不同,因此本次系列中使用基本框架是 spring-boo-3.3.0(默认引入的Spring Security是6.3.0),JDK版本使用的是19,本系列OAuth2的代码采用Spring Security6.3.0框架,所有代码都在oauth2-study项目上:https://github.com/forever1986/oauth2-study.git

1 示例说明

上面我们已经了解了OAuth 2.0的一些关键角色以及不同模式的流程。那么我们先从一个示例开始,这样我们更为深刻理解其工作原理。

下面我们把自己项目作为Client(客户端),通过授权码模式去获取Gitee的用户信息,那么Gitee就是Authorization ServerResource Server。以下图就是要实现过程:

在这里插入图片描述

2 演示授权码模式获得令牌

我们先不使用代码的方式,演示一遍如何模拟客户端,使用授权码模式的方式,去获得用户信息。

1)首先,你必须注册一个Gitee账号,就如同系列一中一样,Gitee就是淘宝,你要先拥有账号才有你的信息。

2)其次,在github上面注册你的Client(第三方应用),也就是你的项目(就如同系列一中第三方分析应用)。注册地址:https://gitee.com/oauth/applications/new 。以下就是注册的内容:
在这里插入图片描述

注意:这里的回调地址为什么是这个,其实回调地址自己都可以随便写的。但是为了下一章使用Spring Security 6搭建客户端,因此设置Spring Security 6默认的回调地址(这个在第4章客户端的底层原理中会解释) 。

3)创建应用后,你会得到一个Client ID和Client Secret,这两个就是我们获得授权的关键,拷贝下来,后续授权码模式获得用户信息需要使用到。
在这里插入图片描述

4)我们先简单回顾一下授权码模式的流程

  • A:**你(User-Agent)打开到Gitee(Authorization Server授权服务器)**的授权界面,**你(User-Agent)**点击确认授权
  • B:**Gitee(Authorization Server授权服务器)**会返回一个授权码Code
  • C:使用授权码Code,再次访问Gitee(Authorization Server授权服务器)去获得令牌token

下面 从第5)到第7)步就是模拟该流程:

5)打开浏览器,创建一个请求:
https://gitee.com/oauth/authorize?client_id=xxxxxxxxx&redirect_uri=http://localhost:8080/login/oauth2/code/gitee&response_type=code

其中参数client_id替换为步骤3)中获得的Client ID。
redirect_uri就是我们注册是使用的回调地址:http://localhost:8080/login/oauth2/code/gitee

如果你已经登录过Gitee,那么你会跳转到以下界面,如果你还未登录Gitee,则会先要登录Gitee。
在这里插入图片描述

6)上图中,你点击授权,你会跳转到一个新的页面,那就是我们设置的回调地址(虽然无法访问,但是没关系),同时你看URL会多了一个code参数,这就是授权码模式下返回的code
在这里插入图片描述

7)打开Postman工具,新建一个post请求,按照下图的请求后,你会获得一个access_token。至此授权码模式下获取令牌token已完成
在这里插入图片描述

8)获得用户信息,使用postman,将步骤7)中获得的令牌token,访问:https://gitee.com/api/v5/user,可以得到用户信息
在这里插入图片描述

结语:至此,我们就使用浏览器+postman工具演示了通过授权码模式去获取Gitee的用户信息。这过程中,我们只是遵循OAuth2的流程,就能够实现授权方法。那么接下来,我们采用代码方式来实现这个流程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

linmoo1986

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值