【Keycloak】关于 keycloak的一个“坑”

发布时间 2023-07-06 18:29:06作者: aaacarrot

其实是不能说是keycloak 的坑,
毕竟是使用不当引起的问题。
问题只有在找到解决方案之后才觉得很简单

记录一个什么样的错呢:

项目中使用了keycloak,
然后要部署一个新的环境,
前面一切都岁月静好,也没什么大的问题。

项目启动,登录,打开F12,然后发现。。。。
怎么有一个接口在一直在报错???什么情况!

这个接口:

http://10.11.5.100:8080/auth/realms/demo_realm/protocol/openid-connect/login-status-iframe.html/init?client_id=prod_vue&origin=http%3A%2F%2F10.11.15.11%3A8080

是 keycloak 的一个接口,
一直在刷,然后都是 403 Forbidden。

因为一直不能正常响应,于是一直不断地重试。

但是!但是同时也有其它的几个环境在部署,但都没有问题,偏偏就其中一个环境有问题。
keycloak, ldap 的部署包都是一样的。业务包就肯定是有差异,但差异不大。并且,这个报错明显和业务无关。

如果一定要说有什么不同,那就是部署的人员不同。

比较尴尬的事情就是:知道是 keycloak 的问题,但没有证据说明这就是 keycloak 的问题。


怎么办,拖了好几天的一个问题。

终于要下定决心去解决一下。

大致方向觉得是 keycloak 有问题。怎么定位?

完全没有头绪,
一开始403,以为是nginx的问题,但是直接调用 keycloak 也还是有这样的问题。所以应该不是 nginx 的问题。(只改了请求的 host, 后面的 参数没有变,如果变了说不定就发现一些端倪了。)

不是nginx的问题,那还是应该是 keycloak 的问题了。
既然觉得它有问题,但苦于没有证据,
那只好再安装一个来对比一下了。

于是再从之前的项目找了一个keycloak部署包,
再次安装,
在nginx 开一个新的端口(避免影响之前的)
新端口server 配置指向新的 keycloak ,
配置keycloak,配置 ldap, 同步ldap用户。
修改 keycloak 的 theme.properties 文件
启动 Keycloak,
postman 调用接口,OK! 没有报错, 擦! 还不是这个 keycloak 的问题!被我找到了吧。那个兴奋!真是有趣。
然后,打脸。(项目登录不进去了,用户密码明明没有中文,页面上传参到 keycloak 的时候,它就是变成了乱码。闻所未闻!!!!
为什么 英文也会乱码! 什么情况!

抑郁了。麻木。
以为找到出路,想不到只是徐晃一枪。解决了一个问题,出现另外一个问题。

怎么办呢,真的很迷。

在讨论组里面反馈出来。技术经理疑惑地表示,为什么一个开源的东西,被我们搞得这么复杂?——很有水平的发问,因为我们确实不知道,为什么它能这么麻烦。
每一次的部署,多少都会有问题,不是这个就是那个(题外话了)

嗯,缓过去一会儿。

想到一个问题:
明明有一个兄弟环境是正常运行的,为什么不拿过来部署,修改一下配置呢?(emmmmm,为什么一开始没有想到?)

会不会是从另外项目拿过来的keycloak部署包有问题(这些包都不是原生的包,是处理过的)。
为避免版本问题引发的原因,从兄弟项目拿包确实是更为明智的选择。

好。再一次从头开始,从新部署,重新配置,可以保证的是部署包肯定没毛病。(第二次部署,就快得多了)

配置改好,启动,ca ! 不行!
好了,抑郁加深了。但可以明确的是,肯定是配置的问题了。
但问题是,哪里的配置错了?

我错哪了???

(其实keycloak 的配置项也不多,一页一页对下来,也确实能多少发现一些不同。但有一些差异,看起来不像,往往就是真相。)
引用一名名言就是: 当你排除一切不可能的情况,剩下的,不管多难以置信,那都是事实
真的太真实了。。


直接说结果。
后来拉着另外一个同事,尝试了好久,终于突然发现,该不会是这里吧!!!!

就是这几个配置:
这是它原来的样子

Root URL                 http://10.11.5.100:8080/
Valid Redirect URIs      http://10.11.5.100:8080/*
Base URL                 http://10.11.5.100:8080/
Admin URL                http://10.11.5.100:8080/
Web Origins              http://10.11.5.100:8080/

这是它改后终于正常了的样子

Root URL                 http://10.11.5.100:8080/
Valid Redirect URIs      http://10.11.5.100:8080/*
Base URL                 http://10.11.5.100:8080
Admin URL                http://10.11.5.100:8080
Web Origins              http://10.11.5.100:8080

看到区别了吗?
就是这么小小的差异。。。折磨人。

emmmm.

还是那句: 当你排除一切不可能的情况,剩下的,不管多难以置信,那都是事实

小记一下。把坑都踩一遍,就会有新的坑了。哈哈。
但无论如何,相同的坑不能踩两次,这应该是技术人的底线才对。

继续提升问题定位的能力吧。!!