Keycloak的step1.html页面缺失X-FRAME-OPTIONS头问题咨询
原因分析
- 这个
step1.html属于Keycloak第三方Cookie处理流程里的静态页面,是硬编码在核心代码中的,默认不会继承你在领域安全防护里配置的头信息。 - 领域级的安全防护设置只覆盖常规认证页面、控制台等动态生成的内容,这类特定的静态辅助页面不在默认生效范围内,是21.1.2版本的一个已知小问题。
解决建议
1. 反向代理层面添加(推荐,无需修改Keycloak)
如果你的Keycloak前端有反向代理(比如Nginx、Apache),直接针对这个路径添加响应头:
- Nginx配置示例:
location ~* /auth/realms//protocol/openid-connect/3p-cookies/step1.html { add_header X-Frame-Options "DENY" always; # 若允许同域名嵌入,可改为"SAMEORIGIN" } - Apache配置示例:
<LocationMatch "/auth/realms//protocol/openid-connect/3p-cookies/step1.html"> Header always set X-Frame-Options "DENY" </LocationMatch>
2. 定制修改Keycloak源码(适合有开发能力的场景)
- 找到源码中该页面的路径:
services/src/main/resources/theme/base/admin/resources/partials/3p-cookies/step1.html - 在页面的
<head>标签内直接添加元标签:<meta http-equiv="X-Frame-Options" content="DENY"> - 重新编译打包Keycloak服务并部署。
3. 升级Keycloak版本
Keycloak 22及以上版本已经修复了这个问题,官方将这类静态辅助页面纳入了领域安全头的生效范围,升级到最新稳定版即可彻底解决。
内容的提问来源于stack exchange,提问作者Krishna Kumar Akurathi
相关产品推荐
相关产品推荐

