OAuth2
文章平均质量分 97
linmoo2006
十多年深耕研发架构领域,涉及多个行业实际落地,精通java、python
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基于Spring Security 6的OAuth2 系列之二十 - 高级特性--令牌交换(Token Exchange)
令牌交换(Token Exchange)来自于RFC8693协议。OAuth 2.0 Token Exchange 是标准 OAuth 2.0 协议的扩展。它使客户端应用程序能够从充当安全令牌服务(Security Token ServiceSTS) 的授权服务器请求和获取安全令牌(例如访问令牌)。STS 是一项服务,负责验证提供给它的令牌并在响应中颁发新令牌,这使客户端应用程序能够为分布式环境中的资源获取适当的安全令牌。原创 2025-02-20 09:11:58 · 1306 阅读 · 4 评论 -
基于Spring Security 6的OAuth2 系列之二十六 - 终章
至此,我们对Spring Security 6实现OAuth2的内容就介绍完了,当然还有很多内容没有介绍,不过相信通过这一系列,你应该已经掌握了底层原理了,自己就可以去看其它的功能。原创 2025-04-22 13:56:22 · 1686 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之二十五 -响应式编程之二
本章我们介绍了响应式编程实现资源服务器的搭建方式。至此,我们对Spring Security 6 实现OAuth2的全部内容就已经讲完了,下面还有最后一章,将以一个实际项目来结束。原创 2025-02-27 14:33:10 · 913 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之二十四 -响应式编程之一
响应式编程是一种编程范式,它允许程序组件以声明式的方式响应数据的变化。这种编程方式使得开发者能够更容易地构建复杂的异步数据流和事件驱动的应用程序。可能这么说对于理解这个很难,下面我通过一个示例,让你感受一下什么是响应式编程。如果你使用过java的Lambda编程方式,对于理解响应式编程就更容易一点。下面2段代码实现一样的效果,一个是使用java的Lambda表达式,一个是使用Project Reactor响应式编程框架,你先体会一下其编程风格,其实和java的Lambda表达式一样。原创 2025-02-26 16:21:07 · 821 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之二十三 - 高级特性--TLS客户端认证方法之二
本章我们介绍了如何使用证书对授权服务器的客户端进行认证。下一章,我们讲一种新的编程范式:响应式编程。在Spring Security中也采用了这种编程范式重新实现了一遍其框架,因此了解这一部分也很重要。原创 2025-02-26 16:20:28 · 1076 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之二十二 - 高级特性--TLS客户端认证方法之一
到这里,我们已经通过Spring Security做了一次证书双向认证的过程。有了这一章为基础,那么对于OAuth2的授权服务器,其TLS客户端认证方式也是类似,下一章我们讲一下。原创 2025-02-25 15:53:45 · 1213 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之二十一 - 高级特性--自定义授权模式
本次场景,我们来模拟自定义通过手机短信方式进行授权。代码参考lesson15子模块,这里只是模拟,我们假如已有手机号码:13888888888。并接收到的验证码:9999我们在上一章的《系列之二十 - 高级特性–令牌交换(Token Exchange)》或者前面的《系列之十七 - 高级特性–设备授权码模式》中的底层源码解析就已经知道,它们都可以认为是一种新的授权码模式,因此重写一种授权方式必须实现和,当然,你还要定义自己的。原创 2025-02-25 15:52:30 · 1381 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之十九 - 高级特性--OIDC1.0协议之二
我们发现在访问/userinfo接口时,只返回一个用户名,如果我们想返回更多的信息,应该如何操作呢?现在我们知道其通过id_token里面的信息取获取的。第一种方法:自定义id_token,将信息放入id_token中,我们需要自定义OAuth2TokenGenerator。或许你存一些无关紧要的信息还是可以接受的,但是如果信息中包括个人隐私以及系统权限等信息,就会使得id_token暴露太多信息。如果想实现这个,参考官方的案例。原创 2025-02-18 16:53:36 · 1223 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之十八 - 高级特性--OIDC1.0协议之一
本章简介了OIDC1.0协议,并使用Spring Security演示了一遍OIDC1.0协议的实现。下章我们将去窥探其原理。原创 2025-02-18 16:53:05 · 1495 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之十七 - 高级特性--设备授权码模式
本章我们对设备授权码模式进行了详细的讲解。下一章我们继续讲解OAuth2的新特性。原创 2025-02-17 09:19:44 · 1450 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之十六 - 高级特性--PKCE
本章我们了解了none情况下的认证模式,可以通过PKCE进行增强。其实PKCE不止是none认证方式,所有认证方式下都可以加入PKCE,但是PKCE只能用于授权码模式,不能用于客户端模式。下一章,我们将继续OAuth2.1未讲解的一个关键更新:设备授权码模式。原创 2025-02-17 09:18:28 · 1678 阅读 · 5 评论 -
基于Spring Security 6的OAuth2 系列之十五 - 高级特性--客户端认证方式
本章讲了授权服务器对客户端认证的几种不同方式及其原理,并使用代码演示一遍。下一章我们继续讲述这一部分内容,也就是none方式的客户端认证,但是会有一个新的扩展-PKCE扩展,这是OAuth2.1版本才有的,说明Spring Security 6 还是走在比较前面。原创 2025-02-12 09:10:16 · 1645 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之十四 - 资源服务器--自定义资源服务器
处理认证失败的异常:处理没有权限或者没有登录的异常我们从上一章知道资源服务器会去授权服务器请求得到JWT的公钥,或者配置某一个地方获取公钥。这里还有一种办法,就是本地公钥,可以通过自定义decoder方式,获取本地公钥,这样就可以不依赖其它服务。代码参考lesson08子模块1)新建lesson08子模块,复制和lesson07子模块一致2)在SecurityConfig配置下,配置自己加载本地的公钥@Beanhttp// userInfo接口需要SCOPE_profile权限。原创 2025-02-11 13:15:50 · 1319 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之十三 - 资源服务器--底层原理
7)得到的。原创 2025-02-11 13:15:11 · 1213 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之十二 - 资源服务器--开篇
资源服务器是如何验证你的token呢?从官方文档上面看,默认会根据你配置的授权服务器地址,去读取以下3个接口:从其中获得jwtURL地址,然后通过该地址去获取token的验证密钥(关于资源服务器底层原理这部分我们在《系列之十三 - 资源服务器–底层原理》中再来了解)。这里我们先来看看,有时候因为安全性问题,授权服务器不会开启这些接口,因此需要我们自己提供一个接口给资源服务器获取Jwks,这个在官方文档中的jwk-set-uri配置可以自定义获取Jwks接口,下面我们就模拟这个过程。原创 2025-02-10 09:02:40 · 1307 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之十一 - 授权服务器--前后端分离授权服务器
至此,我们演示了一个前后端分离的授权服务器的。到目前为止,我们关于授权服务器的使用就告一段落,当然还有很多功能没有讲,这个在后面的系列会逐一讲解,下一章我们来看看资源服务器。原创 2025-02-10 09:02:04 · 2191 阅读 · 21 评论 -
基于Spring Security 6的OAuth2 系列之十 - 授权服务器--刷新token
本章我们讲解了刷新token的方式以及原理。到目前为止,我们已经对Spring Security实现的授权服务器有了比较深入的了解。下面我们将结合Spring Security,实现一个生产可用的前后端分离的授权服务器。原创 2025-02-03 15:05:58 · 1645 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之九 - 授权服务器--token的获取
我们从源码OAuth2AuthorizationServerJwtAutoConfiguration可以看到默认情况下是自动生成一个RSA非对称的加密,如下图:安全问题:我们知道密钥是经常需要轮换的,如果使用默认我们就无法定时轮换,当然重新启动就能切换集群问题:如果我们的授权服务器是一个集群,那么每个服务器的密钥都是不一样,无法实现集群效果因此我们只需要自定义jwkSource,就可以自己使用自己生成的RSA密钥。代码参考lesson05子模块。原创 2025-02-03 15:05:20 · 2220 阅读 · 1 评论 -
基于Spring Security 6的OAuth2 系列之八 - 授权服务器--Spring Authrization Server的基本原理
本章我们对Spring Authrization Server如何实现授权码模式以及自定义客户端信息进行源码解析,并了解了几个关键的Filter过滤器。有了这个基础,对接下来我们实现更为高级的授权服务器功能,并了解实现原理就变得更为容易。原创 2025-01-31 15:09:39 · 2113 阅读 · 0 评论 -
基于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都做了较大改动,里面甚至将授权服务器模块都移除了,导致在配置同样功能时,花费了些时间研究新版本的底层原理,这里将一些学习经验分享给原创 2025-01-31 15:08:21 · 2387 阅读 · 0 评论 -
基于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都做了较大改动,里面甚至将授权服务器模块都移除了,导致在配置同样功能时,花费了些时间研究新版本的底层原理,这里将一些学习经验分享给原创 2025-01-23 13:20:18 · 1659 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之五 - 授权服务器--开篇
代码参考lesson02子模块,其中该子模块有2个子模块,分别是:oauth-server和oauth-client,他们分别代表oauth的授权服务器和oauth的客户端。原创 2025-01-23 13:19:03 · 1782 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之四 - 客户端--oauth2-client底层原理
本章我们从底层原理分析了Spring Security默认配置OAuth2客户端的原理。至此我们对OAuth2的流程和模式都有了比较深入的了解,但是到目前为止,我们使用的是第三方的gitee的授权服务器,那么如果我们自己实现一个授权服务器,该如何做呢?那么接下来几章,将会揭晓授权服务器。原创 2025-01-22 11:19:48 · 1694 阅读 · 1 评论 -
基于Spring Security 6的OAuth2 系列之三 - 客户端--基于Spring Security演示授权码模式
到这里,我们已经通过Spring Security 6的oauth2-client完成了我们在系列2中手动实现的授权码模式获得用户信息的流程。下面我们将会从源代码的方式解析oauth2-client是如何完成这一过程。原创 2025-01-22 11:15:40 · 1607 阅读 · 4 评论 -
基于Spring Security 6的OAuth2 系列之二 - 客户端--非代码演示授权码模式
至此,我们就使用浏览器+postman工具演示了通过授权码模式去获取Gitee的用户信息。这过程中,我们只是遵循OAuth2的流程,就能够实现授权方法。那么接下来,我们采用代码方式来实现这个流程。原创 2025-01-21 10:46:28 · 1660 阅读 · 0 评论 -
基于Spring Security 6的OAuth2 系列之一 - 开篇入门
这一章我们基本上对OAuth2做什么的做了基本了解,同时还了解了其关键角色以及模式,这两部分都是非常重要的,因为后面编程都需要理清楚你是什么角色,以及采用哪种模式。我们接下来会通过客户端、授权服务器以及资源服务器三个方面讲述整个Spring Security实现OAuth的过程。下面3章主要是从一个Client客户端角色,使用授权码模式,让github给我们授权并访问github获得用户信息,并讲解Spring Security的oauth2-client组件底层原理。原创 2025-01-21 10:35:42 · 1816 阅读 · 14 评论
分享