- 博客(157)
- 资源 (3)
- 收藏
- 关注
原创 基于Spring Security 6的OAuth2 系列之十二 - 资源服务器--开篇
资源服务器是如何验证你的token呢?从官方文档上面看,默认会根据你配置的授权服务器地址,去读取以下3个接口:从其中获得jwtURL地址,然后通过该地址去获取token的验证密钥(关于资源服务器底层原理这部分我们在《系列之十三 - 资源服务器–底层原理》中再来了解)。这里我们先来看看,有时候因为安全性问题,授权服务器不会开启这些接口,因此需要我们自己提供一个接口给资源服务器获取Jwks,这个在官方文档中的jwk-set-uri配置可以自定义获取Jwks接口,下面我们就模拟这个过程。
2025-02-10 09:02:40
326
原创 基于Spring Security 6的OAuth2 系列之十一 - 授权服务器--前后端分离授权服务器
至此,我们演示了一个前后端分离的授权服务器的。到目前为止,我们关于授权服务器的使用就告一段落,当然还有很多功能没有讲,这个在后面的系列会逐一讲解,下一章我们来看看资源服务器。
2025-02-10 09:02:04
488
原创 基于Spring Security 6的OAuth2 系列之十 - 授权服务器--刷新token
本章我们讲解了刷新token的方式以及原理。到目前为止,我们已经对Spring Security实现的授权服务器有了比较深入的了解。下面我们将结合Spring Security,实现一个生产可用的前后端分离的授权服务器。
2025-02-03 15:05:58
1175
原创 基于Spring Security 6的OAuth2 系列之九 - 授权服务器--token的获取
我们从源码OAuth2AuthorizationServerJwtAutoConfiguration可以看到默认情况下是自动生成一个RSA非对称的加密,如下图:安全问题:我们知道密钥是经常需要轮换的,如果使用默认我们就无法定时轮换,当然重新启动就能切换集群问题:如果我们的授权服务器是一个集群,那么每个服务器的密钥都是不一样,无法实现集群效果因此我们只需要自定义jwkSource,就可以自己使用自己生成的RSA密钥。代码参考lesson05子模块。
2025-02-03 15:05:20
909
原创 基于Spring Security 6的OAuth2 系列之八 - 授权服务器--Spring Authrization Server的基本原理
本章我们对Spring Authrization Server如何实现授权码模式以及自定义客户端信息进行源码解析,并了解了几个关键的Filter过滤器。有了这个基础,对接下来我们实现更为高级的授权服务器功能,并了解实现原理就变得更为容易。
2025-01-31 15:09:39
1301
原创 基于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
1382
原创 基于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
984
原创 基于Spring Security 6的OAuth2 系列之五 - 授权服务器--开篇
代码参考lesson02子模块,其中该子模块有2个子模块,分别是:oauth-server和oauth-client,他们分别代表oauth的授权服务器和oauth的客户端。
2025-01-23 13:19:03
784
原创 基于Spring Security 6的OAuth2 系列之四 - 客户端--oauth2-client底层原理
本章我们从底层原理分析了Spring Security默认配置OAuth2客户端的原理。至此我们对OAuth2的流程和模式都有了比较深入的了解,但是到目前为止,我们使用的是第三方的gitee的授权服务器,那么如果我们自己实现一个授权服务器,该如何做呢?那么接下来几章,将会揭晓授权服务器。
2025-01-22 11:19:48
951
原创 基于Spring Security 6的OAuth2 系列之三 - 客户端--基于Spring Security演示授权码模式
到这里,我们已经通过Spring Security 6的oauth2-client完成了我们在系列2中手动实现的授权码模式获得用户信息的流程。下面我们将会从源代码的方式解析oauth2-client是如何完成这一过程。
2025-01-22 11:15:40
889
原创 基于Spring Security 6的OAuth2 系列之二 - 客户端--非代码演示授权码模式
至此,我们就使用浏览器+postman工具演示了通过授权码模式去获取Gitee的用户信息。这过程中,我们只是遵循OAuth2的流程,就能够实现授权方法。那么接下来,我们采用代码方式来实现这个流程。
2025-01-21 10:46:28
1059
原创 基于Spring Security 6的OAuth2 系列之一 - 开篇入门
这一章我们基本上对OAuth2做什么的做了基本了解,同时还了解了其关键角色以及模式,这两部分都是非常重要的,因为后面编程都需要理清楚你是什么角色,以及采用哪种模式。我们接下来会通过客户端、授权服务器以及资源服务器三个方面讲述整个Spring Security实现OAuth的过程。下面3章主要是从一个Client客户端角色,使用授权码模式,让github给我们授权并访问github获得用户信息,并讲解Spring Security的oauth2-client组件底层原理。
2025-01-21 10:35:42
745
原创 Spring Security 6 系列之十二 - 最后终章
我们通过12章的系列,从底层原理讲到实际应用。基本上揽括了Spring Security 6的功能,当然还有许多功能没有谈到,比如CRSF 、Remember me、密码升级等等,我相信学习完这一系列后,你如果有兴趣了解Spring Security的其它功能,对你来说应该易如反掌。另外现在内部微服务做统一登录认证,都会使用网关+OAuth2方式,这部分我们将会单独开一个系列来讲解。
2024-12-30 14:03:37
744
原创 Spring Security 6 系列之十一 - 白名单和跨域处理
了解跨域请求之前,我们先了解什么是同源策略。同源策略(Same-Origin Policy)是一种安全机制,它限制一个文档或脚本只能读取来自同一源的信息。这里的“源”由协议、域名和端口组成。如果一个请求的目标地址与当前文档的源不相同,则该请求被视为跨域请求。简单来说就是如果同一个网页里面,请求来自2个不同的源(协议、域名或端口有一个不一致)的话,则会出现跨域问题,会报出一个cors的错误,这是其实是为了保证一种安全的机制,防止恶意网站访问用户的敏感信息或执行不安全的操作。
2024-12-30 14:01:49
1052
原创 Spring Security 6 系列之十 - 自定义认证方式(手机短信验证码)
我们要自定义AuthenticationToken、AuthenticationProvider、AuthenticationFilter三个类,并模拟账号密码认证方式对手机验证码进行认证。
2024-12-26 15:13:16
830
原创 Spring Security 6 系列之九 - 集成JWT
1)不清楚的可以回顾lesson03子模块,这里做了一些小改动2) 在entity包下新增LoginUserDetails类,自定义类为了能够Redis序列化,之前使用Security默认的User,在Redis反序列化会报错@Data@Override@Override@Override@Override@Override@Override@Override3)定义entity包下的TUser和对应mapper包下的TUserMapper@Data。
2024-12-26 15:12:20
1153
原创 Spring Security 6 系列之八 - 前后端分离
我们现在通过自定义方式实现了真正的前后端分离,但是项目还是基于Session方式,那么下一章我们会更贴近实际,使用JWT,将结合Redis、JWT、异常处理,实现一个前后端分离的完整示例。
2024-12-23 18:01:14
850
原创 Spring Security 6 系列之七 - 自定义异常管理
本章我们了解了Spring Security常见的一些异常,以及异常处理机制并自定义异常的返回。之所以要做自定义异常以Json方式返回,往往是因为前后端分离的架构,前后端一般都会约定返回Json数据格式。那么下一章,我们看看Spring Security如何做前后端分离。
2024-12-23 18:00:19
1011
原创 Spring Security 6 系列之六 - 会话管理(Session)
我们在本章中了解到Spring Security的Session,并使用Redis实现Session共享。在实际业务中,Session是一种有状态登录,也就是服务器其实会存储Session信息。而现在很多项目都是使用Restful风格的微服务,Restful风格其实强调的是服务的无状态性、前后端分离。因此接下来我们开始了解Spring Security 做前后端分离的一些操作,下一章先从异常处理开始。
2024-12-19 14:19:17
949
原创 Spring Security 6 系列之五 - 授权管理
我们在本章中了解了授权(访问控制)的原理以及一些基本权限模型,这样我们就已经基本了解Spring Security的认证和授权两大重要模块。接下来我们可能会更深入或者说跟贴近实践使用Spring Security的功能,下一章我们从Session会话管理开始。
2024-12-19 14:18:21
774
原创 Spring Security 6 系列之四 - 自定义配置和自定义登录界面
如果需要自定义配置,你只需要定义一个类,注解为@Configuration(Spring Security5之后连同@EnableWebSecurity注解都不需要),并定义一个SecurityFilterChain securityFilterChain(HttpSecurity http)返回,就会默认替换掉原先的里面的配置,我们可以参考写一个默认配置。
2024-12-18 08:50:09
991
原创 Spring Security 6 系列之三 - Filter过滤器
关于Spring Security的底层原理大概讲这么多。Spring Security的过滤器有那么多,我们这里主要讲的是几个经常使用到的,其它的过滤器后续遇到需要自定义配置的时候,我们再讲解。Spring Security默认配置显然不能符合一个真正的业务需求,那么下一章我们就要开始做各种自定义配置。
2024-12-18 08:48:56
1235
原创 Spring Security 6 系列之二 - 基于数据库的用户认证和认证原理
前提条件:基于mysql数据库创建一个数据库,名为spring_security_study,创建用户表t_user下面开始说明基于自定义数据库的用户配置代码参考lesson03子模块1)新建子模块lesson03,其pom引入以下依赖:(引入mybatis-plus、mysql-connector、druid连接池、lombok)
2024-12-16 17:03:31
1306
原创 Spring Security 6 系列之一 - 开篇入门
我们可以通过配置application.yml文件,为Spring Security配置默认用户名和密码,这样就不会使用默认user和随机密码server:port: 8080spring:security:user:name: moo结语:问题来了,即使通过这种配置自定义账号密码,在业务上面来说,也不会有人将用户名和密码放到配置文件中,一般都会放到数据库中。那么Spring Security也考虑到这种情况,下一章我们来讲解:Spring Security基于数据库的用户认证和认证原理。
2024-12-16 17:02:43
1168
1
原创 java脚手架系列16-AI大模型集成
Data@Autowiredpublic String generate(@RequestParam(value = "message", defaultValue = "你是谁?.build();.build();.build();
2024-11-25 13:44:29
1019
原创 java脚手架系列15-分库分表(ShardingSphere)
之所以想写这一系列,是因为之前工作过程中有几次项目是从零开始搭建的,而且项目涉及的内容还不少。在这过程中,遇到了很多棘手的非业务问题,在不断实践过程中慢慢积累出一些基本的实践经验,认为这些与业务无关的基本的实践经验其实可以复刻到其它项目上,在行业内可能称为脚手架,因此决定将此java基础脚手架的搭建总结下来,分享给大家使用。
2024-11-25 13:43:34
770
原创 java脚手架系列14-定时任务
所需的功能核心功能:定时调度、任务管理、可观测日志高可用:集群、分片、失败处理高性能:分布式锁扩展功能:可视化运维、多语言、任务编排整体架构一个分布式定时任务调度框架一般分为3个模块:调度中心:负责接收并分配任务,任务调度,核心调度模块。任务执行:负责执行任务,执行完反馈给调度中心。监控中心:主要负责节点管理,任务队列管理,监控管理等。关于开源的分布式定任务框架,这里就不累述了,大家可以参照我这篇文章《分布式定时任务调度框架》
2024-11-01 16:56:28
614
1
原创 java脚手架系列13-IoT
之所以想写这一系列,是因为之前工作过程中有几次项目是从零开始搭建的,而且项目涉及的内容还不少。在这过程中,遇到了很多棘手的非业务问题,在不断实践过程中慢慢积累出一些基本的实践经验,认为这些与业务无关的基本的实践经验其实可以复刻到其它项目上,在行业内可能称为脚手架,因此决定将此java基础脚手架的搭建总结下来,分享给大家使用。
2024-11-01 16:55:15
800
原创 java脚手架系列12-mongoDB
之所以想写这一系列,是因为之前工作过程中有几次项目是从零开始搭建的,而且项目涉及的内容还不少。在这过程中,遇到了很多棘手的非业务问题,在不断实践过程中慢慢积累出一些基本的实践经验,认为这些与业务无关的基本的实践经验其实可以复刻到其它项目上,在行业内可能称为脚手架,因此决定将此java基础脚手架的搭建总结下来,分享给大家使用。
2024-10-30 15:22:17
903
原创 java脚手架系列11-消息队列、对象存储(OSS)
之所以想写这一系列,是因为之前工作过程中有几次项目是从零开始搭建的,而且项目涉及的内容还不少。在这过程中,遇到了很多棘手的非业务问题,在不断实践过程中慢慢积累出一些基本的实践经验,认为这些与业务无关的基本的实践经验其实可以复刻到其它项目上,在行业内可能称为脚手架,因此决定将此java基础脚手架的搭建总结下来,分享给大家使用。
2024-10-30 15:21:38
786
原创 java脚手架系列10-统一缓存、分布式锁
之所以想写这一系列,是因为之前工作过程中有几次项目是从零开始搭建的,而且项目涉及的内容还不少。在这过程中,遇到了很多棘手的非业务问题,在不断实践过程中慢慢积累出一些基本的实践经验,认为这些与业务无关的基本的实践经验其实可以复刻到其它项目上,在行业内可能称为脚手架,因此决定将此java基础脚手架的搭建总结下来,分享给大家使用。
2024-10-22 11:39:18
1428
原创 java脚手架系列9-统一权限认证gateway
之所以想写这一系列,是因为之前工作过程中有几次项目是从零开始搭建的,而且项目涉及的内容还不少。在这过程中,遇到了很多棘手的非业务问题,在不断实践过程中慢慢积累出一些基本的实践经验,认为这些与业务无关的基本的实践经验其实可以复刻到其它项目上,在行业内可能称为脚手架,因此决定将此java基础脚手架的搭建总结下来,分享给大家使用。
2024-10-22 11:37:07
1159
原创 java脚手架系列8-统一授权OAuth2
虽然是实践代码,但是最好了解一下OAuth2的基本内容,如果已经了解过,请跳过这部分,直接看代码实践。
2024-10-17 13:15:55
992
原创 java脚手架系列7--事务
之所以想写这一系列,是因为之前工作过程中有几次项目是从零开始搭建的,而且项目涉及的内容还不少。在这过程中,遇到了很多棘手的非业务问题,在不断实践过程中慢慢积累出一些基本的实践经验,认为这些与业务无关的基本的实践经验其实可以复刻到其它项目上,在行业内可能称为脚手架,因此决定将此java基础脚手架的搭建总结下来,分享给大家使用。
2024-10-17 13:14:51
493
原创 java脚手架系列6--openfeign
之所以想写这一系列,是因为之前工作过程中有几次项目是从零开始搭建的,而且项目涉及的内容还不少。在这过程中,遇到了很多棘手的非业务问题,在不断实践过程中慢慢积累出一些基本的实践经验,认为这些与业务无关的基本的实践经验其实可以复刻到其它项目上,在行业内可能称为脚手架,因此决定将此java基础脚手架的搭建总结下来,分享给大家使用。
2024-10-15 15:51:32
916
原创 java脚手架系列5--mybatisplus持久层、flyway
之所以想写这一系列,是因为之前工作过程中有几次项目是从零开始搭建的,而且项目涉及的内容还不少。在这过程中,遇到了很多棘手的非业务问题,在不断实践过程中慢慢积累出一些基本的实践经验,认为这些与业务无关的基本的实践经验其实可以复刻到其它项目上,在行业内可能称为脚手架,因此决定将此java基础脚手架的搭建总结下来,分享给大家使用。
2024-10-15 15:50:42
810
原创 java脚手架系列3--统一返回格式、异常处理、swagger2
之所以想写这一系列,是因为之前工作过程中有几次项目是从零开始搭建的,而且项目涉及的内容还不少。在这过程中,遇到了很多棘手的非业务问题,在不断实践过程中慢慢积累出一些基本的实践经验,认为这些与业务无关的基本的实践经验其实可以复刻到其它项目上,在行业内可能称为脚手架,因此决定将此java基础脚手架的搭建总结下来,分享给大家使用。
2024-10-10 11:00:23
725
原创 java脚手架系列2--日志、国际化
之所以想写这一系列,是因为之前工作过程中有几次项目是从零开始搭建的,而且项目涉及的内容还不少。在这过程中,遇到了很多棘手的非业务问题,在不断实践过程中慢慢积累出一些基本的实践经验,认为这些与业务无关的基本的实践经验其实可以复刻到其它项目上,在行业内可能称为脚手架,因此决定将此java基础脚手架的搭建总结下来,分享给大家使用。
2024-10-08 09:58:44
1037
原创 java脚手架系列1--模块化、多环境
之所以想写这一系列,是因为之前工作过程中有几次项目是从零开始搭建的,而且项目涉及的内容还不少。在这过程中,遇到了很多棘手的非业务问题,在不断实践过程中慢慢积累出一些基本的实践经验,认为这些与业务无关的基本的实践经验其实可以复刻到其它项目上,在行业内可能称为脚手架,因此决定将此java基础脚手架的搭建总结下来,分享给大家使用。
2024-10-08 09:57:37
882
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人