- 博客(162)
- 收藏
- 关注
原创 SpringBoot启动监听SpringApplicationRunListener
命名我们就可以知道它是一个监听者,分析springboot启动流程我们会发现,它其实是用来在整个启动流程中接收不同执行点事件通知的监听者,SpringApplicationRunListener接口规定了SpringBoot的生命周期,在各个生命周期广播相应的事件,调用实际的ApplicationListener类。
2023-03-29 23:50:57
2068
原创 keycloak对SAML协议 响应信息说明
步骤动作使用的密钥1️⃣IDP 生成 Assertion(包含用户数据)无2️⃣对 Assertion 签名(用于防篡改)IDP 私钥3️⃣用随机 AES 密钥加密 AssertionAES 会话密钥4️⃣用 Keycloak 公钥加密 AES 会话密钥Keycloak 公钥5️⃣把 EncryptedAssertion 返回给 Keycloak最终响应 XML用私钥解密 AES 会话密钥;再解密 Assertion;用 IDP 公钥验证签名;读取用户信息;
2025-11-03 14:52:38
881
原创 2025年,程序员何去何从?
AI 不会让程序员消失,它只会让“敲代码的”变少,让“思考问题的”更值钱。");未来也许复杂,遇事不慌,先 Debug。
2025-10-13 17:21:13
412
原创 keycloak中用户邮箱是唯一的吗
配置项默认值说明允许重复邮箱(Allow duplicate emails)✅ 开启邮箱可重复禁止重复邮箱❌ 关闭邮箱唯一。
2025-10-13 16:34:38
352
原创 如何在Postmen中设置环境变量
在Postman中,可以通过中设置系统不同环境下的参数信息,以方便配置一遍不同环境的参数信息,解决每次请求不同环境时要修改请求参数的烦恼。在日常开发中,系统通常从开发到发布需要分不同的环境以保持系统的开发及健壮性.比dev环境test环境release环境prod环境.在使用Postman调用不同环境的服务端接口时难免每次都需要手动去修改请求路径中的域名信息。当系统接口很多时每次修改就很麻烦,所以就通过配置来解决此问题。
2025-10-11 11:07:57
579
原创 在kotlin中如何使用像java中的static
Java 方式Kotlin 等效方式使用示例常量const valstatic变量伴生对象中的varstatic方法伴生对象中的函数工具类静态方法包级函数或对象声明静态初始化块init块在伴生对象中。
2025-09-09 09:41:44
343
原创 keycloak中对接oidc协议时设置prompt=login
是 OIDC(OpenID Connect)协议中的一个登录请求参数,它的作用是 强制用户重新认证,即使浏览器或 SSO 中已经存在有效的会话。具体解释如下:默认情况下,如果用户已经在 Keycloak 或第三方 SSO 上有有效会话:当你在登录请求中加上 ::应用注册的客户端 ID:登录成功后回调地址:使用授权码模式:必需的 OIDC scope:强制重新认证3️⃣ 在你的场景中的作用在你遇到的问题里:用户登出后仍然直接进入系统首页,原因是 浏览器或 SSO session 没有清理。
2025-09-02 16:09:34
392
原创 Windows环境安装H2数据库
使用 Java Wrapper 将 H2 数据库启动类封装为 Windows 服务。支持 TCP 和 Web 控制台。配置日志输出到控制台和文件。支持自动启动,并可通过服务管理器管理。
2025-09-01 15:50:55
1153
原创 Quarkus OIDC 安全链路时序图
→ 在认证阶段(构建时执行),比更早。→ 在认证完成后、进入 Resource 前执行。→ 在 Resource 方法执行完后,返回给客户端前执行。
2025-08-26 17:23:45
410
原创 如何将前后端打一个可以运行的jar包
Spring Boot 默认会加载。你只需确保接口路径不要冲突即可。即可自动完成前端构建和后端打包。如果你使用的是 Vite 的。即可看到 Vue 页面。
2025-08-07 09:38:07
473
原创 兜底策略-死信队列
情况说明消息被拒绝(basicReject/basicNack),并且消费者拒收且不重新入队队列达到最大长度限制超出队列容量,最旧消息被丢弃消息过期(TTL 到期)设置了过期时间,未及时消费队列被删除或消费者未连接消息无法投递死信队列是 RabbitMQ 中处理失败消息的回收站机制,可提高系统容错能力,防止消息丢失,是高可用消息系统的重要一环。
2025-07-22 11:15:55
481
原创 RabbitMq中启用NIO
项目说明方法作用启用非阻塞 I/O 模式,提升并发性能和连接扩展性适用场景高并发、微服务、高密度连接、容器环境等要求必须配合自定义线程池使用。
2025-06-25 17:15:57
436
原创 RabbitMq中使用自定义的线程池
/ 你管理的线程池问题解答是干什么的?用你提供的线程池来运行 RabbitMQ 的内部任务,避免默认线程池不可控。什么时候用?多连接管理、Spring Boot 项目中自定义线程池、监控线程资源等场景。有什么风险?线程池太小或提前关闭可能会导致连接挂死或数据消费中断。
2025-06-25 17:12:56
613
原创 为什么 通过keycloak 对接SAML后 登录后 用户名是“_”
项检查点建议1SAML Response 是否含有<NameID>若无,则配置 IdP 添加2是否为若用 Attribute,需改为Attribute并设定3是否配置了正确的 Attribute Mapper检查 mapper 是否和 Assertion 字段对应4Mapper 中的是否为username否则不会设置 Keycloak 用户名字段。
2025-06-25 14:13:48
576
原创 keyclocka中如何启用一次性密码 (OTP) 政策
一次性密码(One Time Password,简称OTP),又称“一次性口令”,是指只能使用一次的密码。一次性密码是根据专门算法、每隔60秒生成一个不可预测的随机数字组合,iKEY一次性密码已在金融、电信、网游等领域被广泛应用,有效地保护了用户的安全。Keycloak有多种设置 FreeOTP或 Google Authenticator 一次性密码生成器的策略。单击身份验证菜单,然后单击OTP策略选项卡默认地址类似:http://localhost:8080/admin登录管理用户(初始用户或你创建的 a
2025-04-29 16:02:28
336
原创 如何将IDP映射属性添加,到accountToken中 方便项目获取登录人信息
字段值NamePropertyemailemailString✅✅✅(用于 OIDC userinfo 接口)usernamefirstNamelastName(自定义属性)
2025-04-23 10:55:40
855
原创 keycloak如何对接Auth 2.0协议的IDP
对接 OAuth 2.0 协议的身份认证提供商(IdP)到,一般是通过协议来实现的(OAuth 2.0 的标准扩展)。Keycloak 作为,通过配置“Identity Provider”来接入第三方 OAuth 2.0 / OIDC 服务。
2025-04-23 10:43:05
1249
4
原创 如何将 Azure Active Directory (Azure AD) 作为 SAML IdP 对接到 Keycloak
修改 First Broker Login Flow映射好用户信息字段就能避免用户登录后看到“Update Account Info”页面。
2025-04-23 10:38:27
789
原创 keycloak中IDP首次登录如何跳过 填写个人信息页面
如果你希望彻底绕过这个页面,还可以通过修改打开 Keycloak 管理后台 →。复制一个流(例如命名为移除或禁用这个步骤。到你的 IdP 设置页,将设置为你刚创建的。
2025-04-23 10:23:54
686
原创 在keyckoak中 同一个租户下 多个身份认证提供商 如何通过请求路径跳转到指定身份认证提供商
在 Keycloak 中,如果你在同一个租户(Realm)下配置了多个身份认证提供商(Identity Provider,简称 IdP),你可以通过「指定的 URL 路径参数」来跳转到特定的身份认证提供商进行登录,而无需用户在登录页面上手动选择。
2025-04-23 09:46:47
690
原创 ts中 构造器
构造器是方法,用于初始化对象。可以省略this.属性 = 参数,直接在参数前加修饰符(publicprivateprotectedreadonly。TypeScript 不支持真正的构造函数重载,但可以用可选参数或联合类型模拟。子类必须调用super()以继承父类构造逻辑。readonly属性只能在构造时赋值,之后不可更改。
2025-03-31 11:36:23
717
原创 defineExpose函数
是一种控制组件内部状态和方法对外可见性的方式,使得在需要时可以让其他组件访问这些内容。这在 Vue.js 3 的 Composition API 和语法中尤其有用。
2025-03-18 21:39:07
310
原创 node js 操作文件
fs是Node.js中用于与文件系统交互的模块,允许你进行文件的读写、删除、重命名等操作。它提供了同步和异步的 API,以适应不同的编程需求。
2025-02-16 00:45:40
631
原创 SCSS概念及使用
SCSS是CSS的超集,提供了许多增强功能,能够让样式表的编写变得更加高效、灵活和易于维护。通过使用SCSS的变量、嵌套、混合宏、继承等功能,你可以大大减少代码冗余,提升项目的可维护性。
2025-01-22 11:23:47
838
原创 vue项目快速初始全局css样式
标准化浏览器默认样式,消除浏览器差异。Reset.css:清除所有浏览器的默认样式,适合从零开始自定义样式。:功能强大的实用类优先框架,提供大量类用于构建布局和样式。Bootstrap:全面的UI框架,提供响应式设计和丰富的组件。
2025-01-20 14:26:33
1002
原创 Vue3中ref和reactive的区别
在Vue3中,ref和reactive都是用于响应式编程的API,但它们有不同的使用场景和行为。:专门用于对象、数组或其他复杂数据类型的响应式。:适用于管理包含多个属性或复杂结构的数据。:用于创建对象或数组的响应式数据。,直接访问属性即可。
2025-01-17 17:47:33
643
原创 maven项目生成 依赖检查报告
更侧重于依赖的管理与优化,关注依赖是否被正确使用和引用。专注于依赖的安全性,帮助发现依赖中的已知安全漏洞,增强项目的安全性。
2025-01-15 15:55:31
1317
原创 maven项目SpotBugs代码检查报java.lang.OutOfMemoryError: Java heap space
maxHeap><jvmArgs>随着项目的增大,使用SpotBugs进行代码检查报如下错误:这个错误提示显示了在运行SpotBugs时出现了java.lang.OutOfMemoryError,这通常意味着Java堆内存不足以完成分析任务。
2025-01-15 11:32:48
710
原创 SpringBoot项目使用maven package时跳过Test阶段
true:跳过测试执行,但仍然编译测试代码。<maven.test.skip>true</maven.test.skip>:完全跳过测试的编译和执行。
2025-01-14 10:22:20
413
原创 Keycloak高版本升级SAML 协议单点登录 无法找到断言密钥问题
在SAMLSP元数据文件中选择加密算法并保存。上图是keycloak26.0.5版本。选择Realm中的Keys。
2024-12-26 13:44:22
544
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅