You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Keycloak 25.0.2部署于Azure容器应用的HTTP访问异常排查

解决Azure Container App中Keycloak 25.0.2 HTTP运行但HTTPS访问异常的问题

问题核心

浏览器通过Azure Container App的HTTPS域名访问时,Keycloak生成的内部资源请求用了HTTP协议,触发浏览器混合内容拦截机制,导致登录页面加载失败。虽然直接访问该HTTP URL能获取结果,但HTTPS页面不允许加载HTTP资源,这是关键矛盾点。

修复步骤

1. 补充Keycloak环境变量,指定外部HTTPS域名

修改Dockerfile中的环境变量,让Keycloak知晓外部访问的HTTPS地址,确保生成的资源链接用HTTPS:

ENV KC_HTTP_ENABLED=true
ENV KC_PROXY_HEADERS=forwarded
# 替换为你的Azure Container App HTTPS域名
ENV KC_HOSTNAME=keycloak-server--u9hs5rq.proudrock-baec4025.northeurope.azurecontainerapps.io
ENV KC_HOSTNAME_STRICT=false
ENV KC_HTTP_PORT=8080
  • KC_HOSTNAME:告诉Keycloak外部访问的完整域名,确保生成的资源URL使用HTTPS
  • KC_HOSTNAME_STRICT=false:允许Azure Ingress的转发请求被正常识别
  • KC_HTTP_PORT:指定容器内HTTP服务的端口(默认8080,需和容器暴露端口一致)

2. 调整Realm安全防护配置

更新Content-Security-Policy,允许加载HTTPS资源:

Content-Security-Policy: frame-src 'self' https://keycloak-server--u9hs5rq.proudrock-baec4025.northeurope.azurecontainerapps.io; frame-ancestors 'self' https://keycloak-server--u9hs5rq.proudrock-baec4025.northeurope.azurecontainerapps.io; object-src 'none';

同时保持Require SSL为None,确保容器内HTTP服务正常响应。

3. 验证Azure Container App Ingress配置

  • 确认Ingress的Target port设置为8080(Keycloak容器的HTTP端口)
  • 确认Ingress的Transport设置为Auto或HTTPS,保证外部HTTPS请求转发到容器内部的HTTP服务

原因说明

之前的配置中,Keycloak仅知道自身以HTTP运行,无法感知外部通过HTTPS访问,因此生成的资源链接默认使用HTTP。浏览器出于安全策略,会阻止HTTPS页面加载HTTP资源,导致登录页面的静态资源、接口请求无法正常加载,最终页面异常。

内容的提问来源于stack exchange,提问作者Jesus Corral

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 11:12:14