KeyCloak - 入口不允许通过 https 服务连接

Posted

技术标签:

【中文标题】KeyCloak - 入口不允许通过 https 服务连接【英文标题】:KeyCloak - ingress does not allow connecting over https service 【发布时间】:2021-03-09 12:50:28 【问题描述】:

我已经使用 helm 安装了 keycloak。 创建一个 Traefik 入口以允许公共访问

从 localhost:8080 创建管理员密码后,我只能在端口转发和本地访问时登录管理控制台。

当我使用公共 url 并单击管理控制台时,它会重定向到 https://website/auth/admin/master/console/ 并显示一个空白页面。

我发现了问题,但是当我更改 servicePort: https inside ingress 时,我得到一个内部服务器错误 状态码 500。

当我使用 http 端口时,我收到以下错误: 混合内容:“https://url/auth/admin/master/console/”页面通过 HTTPS 加载,但请求了不安全的脚本“http://url/auth/js/keycloak.js?version=mxda6 '。此请求已被阻止;内容必须通过 HTTPS 提供。

混合内容:“https://url.ca/auth/admin/master/console/”页面通过 HTTPS 加载,但请求了不安全的脚本“http://url/auth/js/keycloak. js?版本=mxda6'。此请求已被阻止;内容必须通过 HTTPS 提供。

我查看了 traefik 日志:

level=debug msg="'500 Internal Server Error' cause: x509: cannot validate certificate for x.x.x.x because it does not contain any IP SANs"

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。白屏没有帮助,但浏览器控制台有帮助。它正在阻止混合内容,即脚本http://url/auth/js/keycloak.js?version=mxda6

Docker Hub 上的文档说:

指定前端基本 URL

要为前端请求设置一个固定的基本 URL,请使用以下环境值(强烈建议在生产环境中这样做):

KEYCLOAK_FRONTEND_URL:指定 Keycloak 的基本 URL(可选,默认从请求中检索)

我在清单中提供了带有 https 方案的外部 url,并且有问题的脚本现在作为 https url 出现在 index.html 中。

- name: KEYCLOAK_FRONTEND_URL
  value: "https://url/auth"

既然是“强烈推荐”,我想如果没有这个变量集,会有更多的小问题,比如其他链接生成错误,例如在电子邮件中,虽然我还没有检查过。

【讨论】:

【参考方案2】:

我找到了一个修复程序,但它仍然没有回答我的问题,为什么当入口指向 https 时,它不起作用。有答案吗?

所以解决方法是在 statefulset keycloak 部署中的 ENV 下添加它。 在ingress中,服务端口是http

            - name: PROXY_ADDRESS_FORWARDING
              value: "true"

我在https://github.com/eclipse/che/issues/9429找到它

【讨论】:

以上是关于KeyCloak - 入口不允许通过 https 服务连接的主要内容,如果未能解决你的问题,请参考以下文章

在nginx入口控制器后启用tls时,keycloak停止工作。

为啥在较新版本的 Keycloak 中不允许使用身份验证流程中的脚本

Keycloak - 如何允许在没有注册的情况下链接帐户

哪些角色允许 Keycloak 领域中的用户使用 Admin-REST-API?

Keycloak 令牌生成不起作用 - 未经授权的凭据

通过 openresty 使用 keycloak 对 websocket 进行身份验证