当前位置:网站首页>第一次改开源中间件keycloak总个结
第一次改开源中间件keycloak总个结
2022-08-01 16:15:00 【rundreamsFly】
前言
- 今年5月入职一家公司,主要负责devops平台建设及开发,在之前的平台中,对接了公司统一用户中心,选择了keycloak开源中间件做为认证中心,各个子系统都通过SSO实现单点等,部分系统还适配OIDC进行身份认证
- 原有系统交互流程中,某两个系统单点实现方式是通过keycloak SPI机制实现的,可能OIDC某些东西没有处理好【实在看不懂源码】,后改为通过模拟keycloak原有登录来实现单点问题,统一存储token
源码
- keycloak是指定版本在源码基础上进行改变的,有个好消息:至少源码还在,上次更新差不多快2年啦,真的是个忧伤的故事
- 拿到源码的那一刻,瞬间懵逼,无论如何各种编译通不过,项目不能启动,各种论坛百度进行搜索源码
- QQ搜索keycloak相关群,一共就两个,其中一个还是一个广告群:

- 心里顿时拔凉拔凉的,大家以后选择中间件还是不要选择国内用得比较少的,不然出了问题搞不懂呀
- 接下来问题得解决呀,只有硬着头上呀,先大概看了下keycloak每个模块具体是干啥,大概的代码流转是如何的。
高潮
- 百度、谷歌各种搜索,总算是代码通过了编译,找到相应的启动类,配置好JDBC进行编译启动
- 刺激的事情来啦:
mvn install -Pdistribution执行完这段代码后,现有的测试环境数据表结构全部进行了初始化,是的,测试环境直接崩溃啦 - 高潮还在继续:这下完犊子啦,看了测试环境的mysql,binlog日志也没开启,意味着数据找不回来,咋办呢,还能咋办呢,先把测试环境搞好吧
- 通过两天的奋斗,中午午觉不敢睡,总算把测试环境恢复啦,这也算对keycloak进一步的熟悉啦。
- 第一件事情就是把测试环境能够正常运行的数据进行备份,一次性备份到两个库,数据丢了真的好可伶。
完成
- 通过前面的跌跌撞撞,也算对keycloak有了一些了解,然后通过idea的debugger一步步的调试,确定代码流程,最终确定模拟改造方案
- 源代码改造完成后接下来又是一个大工程,把现有改过的代码部署到测试环境,之前的脚本也不能运行,然后一步步改脚本,这样的脚本还有好几个

- 接下来就是通过k8s在测试环境进行启动,然后在业务系统中修改keycloak的接口请求地址,业务系统继续进行修改,这里每个业务不一样就不细说啦
- 最终,最终,通过两周的努力,算是完成这个功能啦,坐等上线。
总结
- 说起源码改造可能很多小伙伴比较怂,我刚开始也是,但是无知者无畏,心态要好,都是Java写的,怕个啥,我也是学Java的,哈哈
- keycloak源码中用到了很多设计模式,所以代码阅读可调试起来有些困难,同一个接口都有很多个实现类

- 尽可能调试过的地方都增加上自己能看懂的注释,方便自己下次调试,或者其他开发者阅读代码
- 因为无知,所以在改动任何很细节的方面,都是先把原因的数据进行备份,如数据库、配置文件、代码分支等等,方便出了问题可以快速的回滚
- 上生产要做好上线流程演练,尽可能的多思考,像类似于这种认证中间件,肯定很多系统都有依赖,要对业务有更多的了解和把控
- 通过这次改造最终解决了他们反馈了很久的问题,内心成就感爆棚
总的来说,就是不要怂
多学习,努力干。。。。
边栏推荐
- 兆骑科创平台招才引智,海内外高层次人才引进平台
- kubelet node pressure eviction
- Eslint syntax error is solved
- 蚂蚁首次披露核心基础软件技术开源版图
- 未来小间距竞争的着力点在哪里
- hzero-resource秒退
- LeetCode50天刷题计划(Day 10—— 三数之和(20.50-22.40)
- 全新升级!《云原生架构白皮书 2022 版》重磅发布
- PAT 甲级 A1003 Emergency
- 南京科技大学、中国电子科技第28研究所等联合|MLRIP: Pre-training a military language representation model with informative factual knowledge and professional knowledge base(预训练具有丰富事实知识和专业知识库的军事语言表示模型)
猜你喜欢

【paper】Cam2BEV论文浅析

ESP8266-Arduino编程实例-GA1A12S202对数刻度模拟光传感器

时序数据库在船舶风险管理领域的应用

主流定时任务解决方案全横评

美国弗吉尼亚大学、微软 | Active Data Pattern Extraction Attacks on Generative Language Models(对生成语言模型的主动数据模式提取攻击)

如何防止重复下单?

指针进阶(二)

ECCV 2022 | Poseur:你以为我是姿态估计,其实是目标检测哒

计算机系统与网络安全技术——第一章——信息安全概述——1.1-网络安全定义——什么是信息?

MUI as a mobile phone to return to the action bar
随机推荐
moxa串口服务器配置说明(moxa串口驱动)
时序数据库在船舶风险管理领域的应用
2022年7月最热的10篇AI论文
LeetCode50天刷题计划(Day 7—— 字符串转换整数 (atoi) 12.20-15.20)
在网站页脚增加几只戏水的小鱼
LeetCode50天刷题计划(Day 6—— 整数反转 14.20-15.20)
LeetCode50天刷题计划(Day 8—— 盛最多水的容器(23.00-1.20)
使用Canvas 实现手机端签名
MySQL【创建和管理表】
Next-ViT学习笔记
七夕到了——属于程序员的浪漫
实习日报-2022-7-29
Meeting OA project (6) --- (to-be-opened meeting, historical meeting, all meetings)
Ranking of itineraries (summer vacation daily question 12)
Spark: Cluster Computing with Working Sets
南京科技大学、中国电子科技第28研究所等联合|MLRIP: Pre-training a military language representation model with informative factual knowledge and professional knowledge base(预训练具有丰富事实知识和专业知识库的军事语言表示模型)
到底什么才是真正的商业智能(BI)
VIM实用指南(3)复制,粘贴 ,删除,撤销,重做指令速记
27英寸横置大屏+实体按键,全新探险者才是安全而合理的做法
Eslint syntax error is solved