查看: 62|回复: 0

keycloak~关于iframe方式对接keyclock的注意事项

[复制链接]

3

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2012-4-28
发表于 2025-10-31 09:31:00 | 显示全部楼层 |阅读模式

keycloak作为统一的认证中心,提供了单点登录的能力,一般可以通过超链的方式打开keycloak登录页,这对于不同域名来说,是没有任何问题的;第二种对接方式是通过iframe方式,当你的网站与keycloak不同域名时,在iframe方式对接时,会有cookie Partitioned向的分区限制。

一 Partitioned Cookie

Partitioned Cookie 是浏览器为了平衡功能与隐私而引入的新机制:

  • 分区存储:第三方Cookie不再全局共享,而是按"第一方网站+第三方域名"分区存储
  • 隔离保护:防止跨站跟踪,同时保留必要的跨站功能
  • 特定场景可用:只有在特定第一方网站上下文中才能访问对应的第三方Cookie

在你的场景中的影响

a.com → kc.com (设置分区Cookie)
b.com → kc.com (无法读取a.com分区下的Cookie)

当前状态

  • 用户在 a.com 登录,kc.com 的Cookie存储在 a.com 分区下
  • 用户访问 b.com 时,无法读取 a.com 分区下的 kc.com Cookie
  • 因此无法实现单点登录共享

二 iframe安全相关

  • CSP(Content Security Policy):https://www.w3.org/TR/CSP/
  • X-Frame-Options:https://www.rfc-editor.org/rfc/rfc7034

三 Partitioned对iframe对接keycloak的影响

新版浏览器才有Partitioned这个特性

  • https://github.com/privacycg/CHIPS
  • https://developer.mozilla.org/zh-CN/docs/Web/Privacy/Guides/Privacy_sandbox/Partitioned_cookies
  1. a.com域名对接keycloak.com,在a.com域名登录
  2. b.com域名也对接keycloak,b.com域名无法共享a.com域名的登录状态,因为他们按着域名进行了分区
  3. cookie中auth_session_id的Partitioned(Partition Key)存储为顶级域名,如http://zzl.com,http://lind.com,它对二级域名是共享的

图片

建议

  1. 尽量不采用iframe的方式对接统一认证
  2. 跨域对接keycloak不能使用iframe方式

跨域iframe如果支持,需要修改浏览器配置

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部