- 博客(46)
- 收藏
- 关注
原创 如何用 Vault 保护和管理 Spring Authorization Server JWT 密钥
在现代应用中,安全性至关重要。本文介绍如何利用 HashiCorp Vault 安全管理 JWT 密钥,包括启用 Transit 引擎、创建支持签名的 rsa-2048 密钥、配置 Spring Authorization Server 使用 Vault 密钥。
2024-11-03 23:13:56
809
原创 OAuth2.0 动态注册客户端
本篇博客介绍使用Spring Authorization Server和Spring Security OAuth2 Client实现OAuth 2.0动态注册,含自动注册、令牌获取和资源访问。
2024-11-03 22:05:59
1136
原创 OAuth2.0 设备授权流程
OAuth 2.0 设备授权流程(Device Authorization Grant)专为输入受限设备设计,如智能电视、IoT设备。流程包括设备请求授权、用户在其他设备上完成授权、设备轮询授权状态,最后获取访问令牌。通过 Spring Security 和 Spring Authorization Server 实现设备授权,适用于物联网和智能设备场景。完整代码示例可在 GitHub 项目仓库中找到。
2024-10-04 20:24:15
943
原创 使用 Vue.js 构建 OAuth2 授权同意页面
本文介绍了在前后端分离项目中如何使用Vue.js构建OAuth2授权同意页面,结合Spring Authorization Server和Spring Security构建OAuth2服务器和客户端。
2024-01-19 15:27:51
1701
转载 【转载】我从被解雇中学到的 5 个改变人生的教训,这将使你领先于 97% 的人
在人们感到恐惧且竞争最低的时候做好准备。实际行动,专注于你能够掌控的事情。重新思考你的生活方式和优先事项。保持一贯的努力,最终会有回报。生活不是一条直线,学会在各种情况下做出明智的选择。
2024-01-09 14:09:10
138
原创 Spring AI和Ollama
Spring AI 不仅提供了与 OpenAI 进行API交互,同样支持与 Ollama 进行API交互。Ollama是一个发布在GitHub上的项目,专为运行、创建和分享大型语言模型而设计,可以轻松地在本地启动和运行大型语言模型。
2024-01-06 21:06:40
3696
1
原创 Spring AI 指南
近年来,人工智能技术的迅猛发展改变了我们对科技的看法,并在各个领域引发了巨大的变革。每个人都希望在自己的项目上能够使用人工智能。Spring 框架提供了一个名为 “Spring AI” 的项目,Spring AI 项目旨在简化包含人工智能功能的应用程序的开发,避免不必要的复杂性。目前还处于预测试版,也就意味着将来可能发生变化,不过事实上现在已经可以和OpenAI、Azure OpenAI、Hugging Face、Ollama进行API交互。
2024-01-05 13:55:03
2916
3
原创 PageHelper 使用不当引发的 SQL 出现两个 limit
记录一次测试中遇到的问题,原因PageHelper.startPage()使用不当引起的SQL出现多个limit。
2023-03-06 21:24:06
1107
原创 Spring Security 多因素认证(MFA)
在本文中,我们将使用Spring Security 实现多因素认证,使用 TOTP(基于时间的一次性密码)作为第二种身份识别形式。此 TOTP 由用户移动设备上的应用程序生成,例如 Google 身份验证器。
2023-02-27 22:33:13
3111
4
原创 ArchUnit:轻松测试软件架构
在本文中,我将介绍ArchUnit 框架如何制定规则。您将看到典型的实际示例,以了解如何将此工具集成到您的项目中。
2023-02-22 23:03:41
666
原创 Spring Security OAuth2 内省协议与 JWT 结合使用指南
本文介绍OAuth2.0令牌内省和JWT结合使用,受保护资源可能会接受来自两个不同授权服务器的令牌,受保护资源可以先解析 JWT,弄清楚令牌颁发自哪一个授权服务器,然后向对应的授权服务器发送内省请求。
2022-12-06 21:58:42
689
原创 Spring Security OAuth2 Opaque 令牌的简单使用指南
在本文中,我们使用Spring Authorization Server设置OAuth2授权服务器,并学习了如何配置基于 Spring Security 的资源服务器应用程序来验证不透明令牌。
2022-11-13 17:11:44
2168
4
原创 Spring Security OAuth 2.0授权服务器结合Redis实现获取accessToken速率限制
在生产环境中,我们通常颁发给OAuth2客户端有效期较长的token,但是授权服务无从知晓OAuth2客户端服务是否频繁获取token,便于我们主动控制token的颁发,减少数据库操作,本文我们将结合Redis实现滑动窗口算法限制速率解决此问题。
2022-10-24 21:03:47
1749
原创 将Spring Security OAuth2授权服务JWK与Consul 配置中心结合使用
本文我们将利用Consul KV Store使OAuth2资源服务器发现授权服务器的公钥,OAuth2授权服务器将密钥通过HTTP API更新到KV Store。
2022-10-18 21:36:33
1583
原创 Spring Security OAuth2实现简单的密钥轮换及配置资源服务器JWK缓存
本文介绍Spring Security OAuth2实现简单的密钥轮换,为了维护安全性,保持私钥免受任何网络攻击是所必需的。
2022-09-15 22:46:05
2727
原创 将Spring Cloud Gateway 与OAuth2模式一起使用
Spring Cloud Gateway是一个构建在 Spring 生态之上的 API Gateway。本文我们将使用OpenID Connect 身份验证,Spring Cloud Gateway 将用户身份验证令牌中继到下游服务。
2022-08-14 21:15:08
3565
原创 Spring Security和OpenID Connect
OpenID Connect 是一个开放标准,由 OpenID 基金会于 2014 年 2 月发布。它定义了一种使用 OAuth 2.0 执行用户身份认证的互通方式。OpenID Connect 直接基于 OAuth 2.0 构建,并保持与它兼容。
2022-08-01 21:15:26
3368
原创 Spring Security OAuth2登录
对 OAuth 2.0 进行扩展,使得授权服务器和受保护资源发出的信息能够传达与用户以及他们的身份认证上下文有关的信息,我们就可以为客户端提供用于用户安全登录的所有信息。
2022-07-25 20:51:31
4125
原创 Spring Security OAuth2 带有用于代码交换的证明密钥 (PKCE) 的授权码流
保护OAuth2公共客户端中的授权代码流,使用了一个名为代码交换证明密钥 (PKCE) 的扩展。
2022-07-17 21:36:02
2008
原创 Spring Security OAuth2客户端凭据授权
在没有明确的资源拥有者,或对于客户端来说资源拥有者不可区分,该怎么办?这是一种相当常见的场景。比如后端系统之间需要直接通信时,将使用客户端凭据授权。
2022-07-10 23:22:33
1700
原创 Spring Security 持久化OAuth2客户端
在本文中您将了解如何通过扩展ClientRegistrationRepository实现OAuth2客户端持久化。
2022-07-03 21:41:37
2547
原创 自定义OAuth2授权同意页面
前文我们已经简单的介绍了如何搭建授权服务器,下面将继续介绍如何自定义OAuth2授权同意页面。如果你已经无法容忍Spring Authorization Server 默认丑陋的授权同意页面,那么你可以继续阅读本文,逐步创建一个令自己满意的授权同意页面。从创建一个授权服务器开始。...
2022-06-28 20:27:53
3673
10
原创 将JWT与Spring Security OAuth2结合使用
OAuth 2.0 是行业标准的授权协议。OAuth 2.0 专注于客户端开发人员的简单性,同时为 Web 应用程序、桌面应用程序、移动电话和客厅设备提供特定的授权流程。OAuth 授权服务器负责对用户进行身份验证并发布包含用户数据和适当访问策略的访问令牌。下面我们将使用Spring Authorization Server构建一个简单的授权服务器。让我们从OAuth2授权服务器配置实现开始。...
2022-06-26 17:34:45
4906
2
原创 SpringGateway使用SpringSecurity防止CSRF攻击
SpringGateway使用SpringSecurity防止CSRF攻击配置CSRF保护@Beanpublic SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) { http .csrf(csrf -> csrf.csrfTokenRepository(CookieServerCsrfTokenRepository.withHttpOnlyFalse())) return http.bui
2022-03-14 18:29:56
7845
原创 gitlab回退commit
首先到你的远程仓库,在Repository->Commits可以看到所有的commit,点击你要回退的commit,看到界面选中Revert弹出界面,选择对应分支,勾选Start a new merge request with these changes(使用这些更改启动一个新的合并请求)在本地IDEA中选择Git->Fetch,右下角显示成功后就获取到所有分支的改动,然后选择Git->Merge Changes,弹出的界面选择你合并的分支,点击Merge。此时远程仓库
2021-01-13 21:13:19
5251
1
原创 JDK8_211版本RSA解密出现javax.crypto.BadPaddingException: Decryption error
使用RSA加密解密时,加密没有错误,解密时报错javax.crypto.BadPaddingException: Decryption error,排出其他原因,最终定位到是JDK8_121运行一切正常,JDK8_211和JDK8_271就报错(目前只测了这两个版本)在JDK8_211和JDK8_271下,更改加密模式和填充模式为RSA/None/PKCS1Padding加密就直接出现以下错误:更改为RSA/ECB/PKCS1Padding解密时出现以下错误:至于解决方法尚未找到。如果哪位大神
2021-01-07 20:50:25
1776
3
原创 SpringBoot启动完成前后执行某个方法
在项目启动完成之前@Componentpublic class ApplicationListenerDemo implements ApplicationListener<ContextRefreshedEvent> { @Override public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) { System.out.println("applicationL
2021-01-04 20:40:06
1343
原创 Spring Security整合CAS
CAS(中央认证服务)从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。图1 是 CAS 最基本的协议过程:CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求的 Http 请求中是否
2020-11-15 20:35:55
12183
4
原创 使用H2进行单元测试
主要针对MybatisPlus与H2内存数据库进行单元测试。现如今我们在单元测试中针对service/DAO层测试时,存在以下重要问题:1.需要启动完整的Spring容器,造成启动时间过长2.依赖中间件过多,测试配置文件需要编写与DAO层测试无意义的配置3.需要搭建各种环境(mysql,redis,kafka等)4.每个测试用例都对应一套SQL,并且会对本地的数据库造成影响所以针对上述问题,我们在单元测试要达到以下目的:1.针对DAO层单元测试(service层会互相引用和循环依赖)2.不
2020-11-13 14:02:28
3240
1
原创 Spring项目的resources目录下的文件读取
src/main/resources和src/test/resources下的资源读取方式1. 一般maven会将spring工程编译到target文件夹下,/target/classes就是其根目录。而src/main/resources下的文件被复制到了这个classes文件夹下。2. maven会将src/test/java文件夹下的代码编译到target/test-classes文件夹下。同样的,如果src/test/resources下有资源文件的话,就复制到target/test-class
2020-11-08 18:28:58
4372
原创 redis学习笔记--发布订阅
Redis 发布订阅Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。订阅/发布消息图下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:常用命令命令说明psubscribe pattern [pattern …]
2020-10-31 14:13:18
151
原创 Caused by: java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/embedded/EmbeddedData
Caused by: java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/embedded/EmbeddedDatabaseType缺少spring-boot-starter-data-jdbc依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>
2020-10-27 21:48:07
2834
1
原创 redis学习笔记--复制(Master/Slave)
复制复制就是我们所说的主从复制,主服务器数据更新后根据配置和策略,自动同步到从服务器的master/slaver机制,Master以写为主,Slave以读为主,Redis使用默认的异步复制,其特点是低延迟和高性能。配置从库(slave)方式一:修改redis.conf配置文件slaveof 主服务器IP 主库服务器port方式二:使用slaveof 主服务器IP 主服务器port命令,但是每次主服务器断开都需要重新连接查看复制信息显示与复制相关的信息info replicationma
2020-10-25 18:51:44
644
1
原创 redis学习笔记--配置文件
Units单位# Redis configuration file example.## Note that in order to read the configuration file, Redis must be# started with the file path as first argument:## ./redis-server /path/to/redis.conf # Note on units: when memory size is needed, it is pos
2020-09-23 10:04:21
252
原创 redis学习笔记--事务
Redis事务事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。常用命令命令说明MULTI标记一个事务块的开始。EXEC执行所有事务块内的命令。DISCARD取消事务,放弃执行事务块内的所有命令。WATCH key [key …]监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所
2020-09-22 09:05:08
211
原创 redis学习笔记--redis数据类型
NoSQL概述泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。NoSQL特点易扩展NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样
2020-09-20 10:25:48
267
原创 redis学习笔记--持久化
Redis持久化Redis 提供了不同级别的持久化方式:RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储.AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大.如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式.你也可以同时开启两种持久化方式, 在这种情况下, 当redis重启的时候会优先载入
2020-09-19 20:24:42
288
原创 docker安装redis
下载镜像docker pull redis:6.0运行镜像docker run -p 6379:6379 --name myredis \-v /usr/local/myredis/data:/data \-v /usr/local/myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf \-d redis:6.0 \redis-server /usr/local/etc/redis/redis.conf --appendonly y
2020-09-16 10:35:50
203
1
原创 docker安装mysql
下载镜像docker pull mysql:5.6运行镜像docker run -p 3306:3306 --name mysql -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /zzyyuse/mysql/logs:/logs -v /zzyyuse/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6命令说明:-p 12345:3306:将主机的12345端口映
2020-09-16 10:08:09
179
原创 Kong入门
docker方式安装Kong(使用数据库)1.拉取一个Kong镜像和PostgreSQL数据库docker pull kongdocker pull postgres:9.6.192.创建一个Docker网络kong-net为自定义的网络名称,可以使用任何名称,使容器能够发现彼此并进行通信docker network create kong-net3.启动PostgreSQL数据库docker run -d --name kong-database \ --
2020-09-14 20:16:52
558
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人