使用 SSL 的负载均衡器后面的 Keycloak 给出 "Mixed Content" 错误

Keycloak behind a Load Balancer with SSL gives a "Mixed Content" error

我已经在 GCP Compute Engine (VM) 上设置了 Keycloak(docker 容器)。设置 sslRequired=none 后,我可以通过 public IP(例如 http://33.44.55.66:8080)访问 Keycloak 并管理领域。

我已经配置了 GCP CLassic (HTTPS) 负载平衡器并添加了两个前端,如下所述。 Load Balancer 将请求转发到 VM 上的 Keycloak 实例。

在浏览器中,HTTP URL 工作正常,我能够登录到 Keycloak 并管理领域。但是,对于 HTTPS URL,我得到以下错误

Mixed Content: The page at 'https://my-domain.com/auth/admin/master/console/' was loaded over HTTPS, but requested an insecure script 'http://my-domain.com/auth/js/keycloak.js?version=gyc8p'. This request has been blocked; the content must be served over HTTPS.

注意:我尝试了this建议,但没有用

有人可以帮忙吗?

我永远不会在纯 http 协议上公开 Keycloak。 Keyclok 管理控制台本身通过 OIDC 协议进行保护,OIDC 需要使用 https 协议。所以默认 sslRequired=EXTERNAL 是来自供应商的安全且智能的配置选项。

必须正确配置 SSL 卸载:

  • 带有 PROXY_ADDRESS_FORWARDING=true
  • 的 Keycloak 容器
  • loadbalancer/reverse 代理(nginx、GCP Classic Load Balancer、AWS ALB,...)具有正确的请求 header X-Forwarded-* 配置,因此 Keycloak 容器将知道正确的协议、域用于用户