为 Kubernetes 中的 Keycloak 指定重定向和内部查找的备用 URL

Posted

技术标签:

【中文标题】为 Kubernetes 中的 Keycloak 指定重定向和内部查找的备用 URL【英文标题】:Specify alternate URL for redirect and internal lookups for Keycloak in Kubernetes 【发布时间】:2020-12-23 18:28:59 【问题描述】:

所以我有一个 spring boot 应用程序,它被部署为 Kubernetes 中的一个 pod。我还有一个在 Kubernetes 中运行的 Keycloak 服务器(相同的命名空间)。我在通过本地计算机上的浏览器登录应用程序时遇到问题。

所以我指定了auth-server-url=http://keycloak-service-name:8080/auth,这样我的 pod 就可以访问它,它也可以。当我尝试登录我的应用程序时出现问题,因为它重定向到http://keycloak-service-name:8080/auth,并且由于它是 Kubernetes 服务而无法在本地解决。

我也设置了入口,因此我尝试将身份验证 URL 指定为入口 http://keycloak-ingress/auth,但随后我的 pod 无法访问它并收到错误“无法从...加载 URL”,因为它无法解决入口域。但是,我可以从浏览器访问入口。

我觉得我在这里遗漏了一些非常明显的东西,我需要某种在集群内和集群外都可以访问的 URL。或者也许有办法为我的应用程序正在执行的“加载 URL”的查找指定一个单独的 URL?

我设法让它工作的唯一方法是在外部公开服务并使用外部 IP 和端口,但这不是一个可接受的解决方案。

【问题讨论】:

【参考方案1】:

我发现keycloak服务器中有一个前端URL参数。我将其设置为指向我的入口,并将 auth-server-url 设置为指向我的 keycloak 服务名称。这解决了我的问题,因为当我的应用程序在内部进行查找时它使用服务,但是当我访问前端时它使用入口。

【讨论】:

以上是关于为 Kubernetes 中的 Keycloak 指定重定向和内部查找的备用 URL的主要内容,如果未能解决你的问题,请参考以下文章

来自本地 kubernetes 集群的 Keycloak 端口转发

Keycloak Kubernetes 401 未经授权

Keycloak、oauth2-proxy 和 nginx.ingress.kubernetes

尝试使用 helm 在 Kubernetes Pod 中启动时,Keycloak 崩溃

如何在 Kubernetes 上的 Keycloak Operator 部署中使用自定义主题?

在 Kubernetes 上 Keycloak 登录后获取 NextJS 应用的用户信息