前言

  • 今年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源码中用到了很多设计模式,所以代码阅读可调试起来有些困难,同一个接口都有很多个实现类
  • 尽可能调试过的地方都增加上自己能看懂的注释,方便自己下次调试,或者其他开发者阅读代码
  • 因为无知,所以在改动任何很细节的方面,都是先把原因的数据进行备份,如数据库、配置文件、代码分支等等,方便出了问题可以快速的回滚
  • 上生产要做好上线流程演练,尽可能的多思考,像类似于这种认证中间件,肯定很多系统都有依赖,要对业务有更多的了解和把控
  • 通过这次改造最终解决了他们反馈了很久的问题,内心成就感爆棚

总的来说,就是不要怂
多学习,努力干。。。。

【中间件-keycloak】第一次改开源中间件keycloak总个结相关推荐

  1. 蚂蚁金服SOFA开源负责人鲁直:不只是中间件,未来会开源更多

    近日,技术媒体Linux中国的创始人王兴宇对蚂蚁金服SOFA开源负责人鲁直,就SOFA 5.ServiceMesh.Serverless.Seata等技术内容进行了探讨,以下为专访文章. 虽然我和鲁直 ...

  2. 麒麟 mips mysql_中标麒麟OS+龙芯MIPS适配开源中间件

    大纲 一 背景 二 目标 三 服务器 四 中间件适配 五 应用 六 部署 七 风险 八总结 九 最后rpm 制作 一 背景 19年国家开始筹备和实施安可工程.我司有幸参与其中. 二 目标 适配安装OS ...

  3. 蚂蚁金服SOFA开源负责人鲁直:不只是中间件 ,未来会开源更多

    二月初春,在西子湖畔的细雨中,我拜访了蚂蚁金服中间件团队,和 SOFA 技术负责人鲁直做了一次深入交谈,更妙的是,鲁直也是负责 SOFA 开源事务推进的人,而这样一个切实践行开放核心模式的开源项目,也 ...

  4. 【C/C++服务器开发】中间件的含义及常用中间件介绍

    文章目录 一.中间件的定义 中间件一词的由来 中间件的定义 什么不是中间件 评判关键 中间件的好处 中间件分类 常用基础中间件 中间件云产品 二.中间件的开发 什么是中间件开发? 中间件开发人员需要哪 ...

  5. {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证...

    Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...

  6. 中间件是什么?Linux常用中间件都有哪些?

    在Linux学习和使用中,我们一定听说过中间件这个概念,那么中间件是什么?它又有什么作用?老男孩教育小编借本篇文章给大家讲解一下: 中间件是什么? 中间件是一种独立的系统软件或服务程序,分布式应用软件 ...

  7. MQTT协议学习:2、MQTT中间件搭建及现成MQTT中间件服务

    MQTT协议学习:2.MQTT中间件搭建及现成MQTT中间件服务 文章目录 MQTT协议学习:2.MQTT中间件搭建及现成MQTT中间件服务 1. MQTT协议再解读 2. RabbitMQ (1). ...

  8. scrapy下载中间件(downloader middleware)和蜘蛛中间件(spider middleware)

    scrapy组件 首先我们看下scrapy官网提供的新结构图,乍一看这画的是啥啊,这需要你慢慢的理解其原理就很容易看懂了,这些都是一个通用爬虫框架该具有的一些基本组件.上一篇博客说了项目管道(也就是图 ...

  9. java中间件有哪些java常用中间件介绍

    之前给大家介绍了很多的java基础知识,今天同样的也是要给大家介绍这方面的内容,那么对于java中间件你都了解多少呢究竟什么是java中间件比较常用的java中间件都有哪些一起来了解一下吧. 一.什么 ...

最新文章

  1. 独家 | 如何全面解析数据并创造数据故事
  2. Git超实用总结,再也不怕记忆力不好了
  3. delphi listview动态添加图片_网站图片如何优化适合收录
  4. 超详细 Nginx 极简教程,傻瓜一看也会!
  5. Tokyo Tyrant(TTServer)系列(三)-Memcache协议
  6. html插入javascript变量,javascript如何引用变量?
  7. 【算法系列之九】合并两个有序数组
  8. 手机屏幕什么计算机,windows 7系统中要实现智能手机无线投屏到计算机屏幕上可以借助的软件有哪些?...
  9. 用C语言实现猜数字游戏
  10. 前端leader找我谈心:我是如何从刚毕业的前端菜鸟一步步成长为前端工程师的?...
  11. 扫描QR码即可完成移动支付的LevelUp推出集合NFC、QR码等技术的移动支付终端,供商家免费使用 | 36氪
  12. gbd的简单使用(一)
  13. android九宫格切图,拼图九宫格切图app
  14. 最新时下最火的盲盒商城源码/视频搭建教程
  15. App Inventor 模拟器问题的解决
  16. ospf多区域的原理和配置实例
  17. 语义分割--Dilated Residual Networks
  18. mycat读写分离与主从切换
  19. 迁移C盘到SSD硬盘后启动系统黑屏只有鼠标
  20. Netty私有协议栈 读书笔记

热门文章

  1. OSI网络七层模型和TCP/IP模型
  2. 信息回传(backhaul)的信息率限制, 带宽分配限制
  3. Python批量跑Hive数据到本地目录
  4. 科技科幻风格的RPG像素游戏室内地图素材包
  5. MegaFace完整数据集(65G)
  6. SGD,Adagrad,Adadelta,Adam等优化方法总结和比较
  7. 基于富芮坤的FR801 BLE芯片开发
  8. Word自动续表实现方法 不分表不手动加表头 一劳永逸实现续表 论文必备
  9. Perforce介绍
  10. 每天小练笔8-模拟进程调度