自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

代码还是得自己扣

不想做码农

  • 博客(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脚手架系列4--测试用例、拦截器

异常处理、拦截器、数据库连接。

2024-10-10 11:01:05 1020

原创 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

Mysql的可视化客户端工具

Mysql的可视化客户端工具

2024-11-28

ZooInspector.zip

ZooInspector是一款可以连接zookeeper的可视化客户端

2024-11-07

robo3t-1.4.4 Windows版本

robo3t是一款mongo的客户端可视化工具,1.4.4版本可以连接低版本的mongodb

2024-11-07

mongo-shake-v2.6.5 Linux版本

mongo-shake是一款同步mongo的bingo日志,可以作为从库或者读取实时更新的工具

2024-11-07

influxdb2-2.7.10-windows

influxdb2-2.7.10-windows,是一个Windows版本可以运行的的influxdb。

2024-11-07

influxStuido-0.2.0.0-Release

influxStuido一款可视化查询influxDB的客户端工具

2024-11-07

2023年AIGC发展研究报告1.0版-清华大学

2023年AIGC发展研究报告,清华大学

2023-08-01

netty-4.1.16.Final 源码 allinone

netty-4.1.16最终版本,包括jar、源码、doc等,其中jar有allinone和分开的功能jar。

2017-10-10

JACOB_1.9(java导成word工具jar包)

JACOB 1.9版本 用于java导成word文档的工具jar包

2012-11-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除