keycloak~关于iframe方式对接keyclock的注意事项
<p>keycloak作为统一的认证中心,提供了单点登录的能力,一般可以通过超链的方式打开keycloak登录页,这对于不同域名来说,是没有任何问题的;第二种对接方式是通过iframe方式,当你的网站与keycloak不同域名时,在iframe方式对接时,会有cookie Partitioned向的分区限制。</p><h1 id="一-partitioned-cookie">一 Partitioned Cookie</h1>
<h2 id="partitioned-cookie-的作用">Partitioned Cookie 的作用</h2>
<p><strong>Partitioned Cookie</strong> 是浏览器为了平衡功能与隐私而引入的新机制:</p>
<ul>
<li><strong>分区存储</strong>:第三方Cookie不再全局共享,而是按"第一方网站+第三方域名"分区存储</li>
<li><strong>隔离保护</strong>:防止跨站跟踪,同时保留必要的跨站功能</li>
<li><strong>特定场景可用</strong>:只有在特定第一方网站上下文中才能访问对应的第三方Cookie</li>
</ul>
<h2 id="在你的场景中的影响">在你的场景中的影响</h2>
<pre><code>a.com → kc.com (设置分区Cookie)
b.com → kc.com (无法读取a.com分区下的Cookie)
</code></pre>
<p><strong>当前状态</strong>:</p>
<ul>
<li>用户在 <code>a.com</code> 登录,<code>kc.com</code> 的Cookie存储在 <code>a.com</code> 分区下</li>
<li>用户访问 <code>b.com</code> 时,无法读取 <code>a.com</code> 分区下的 <code>kc.com</code> Cookie</li>
<li>因此无法实现单点登录共享</li>
</ul>
<p><img src="https://pic3.zhimg.com/v2-ad116f2b13ab828379b873e056e9abe0_1440w.jpg" alt="" loading="lazy"></p>
<h1 id="二-iframe安全相关">二 iframe安全相关</h1>
<ul>
<li>CSP(Content Security Policy):https://www.w3.org/TR/CSP/</li>
<li>X-Frame-Options:https://www.rfc-editor.org/rfc/rfc7034</li>
</ul>
<h1 id="三-partitioned对iframe对接keycloak的影响">三 Partitioned对iframe对接keycloak的影响</h1>
<blockquote>
<p>新版浏览器才有Partitioned这个特性</p>
<ul>
<li>https://github.com/privacycg/CHIPS</li>
<li>https://developer.mozilla.org/zh-CN/docs/Web/Privacy/Guides/Privacy_sandbox/Partitioned_cookies</li>
</ul>
</blockquote>
<ol>
<li>a.com域名对接keycloak.com,在a.com域名登录</li>
<li>b.com域名也对接keycloak,b.com域名无法共享a.com域名的登录状态,因为他们按着域名进行了分区</li>
<li>cookie中auth_session_id的Partitioned(Partition Key)存储为顶级域名,如<code>http://zzl.com</code>,<code>http://lind.com</code>,它对二级域名是共享的</li>
</ol>
<p><img src="https://img2024.cnblogs.com/blog/118538/202510/118538-20251031091638209-1836488492.png" alt="图片" loading="lazy"></p>
<h1 id="建议">建议</h1>
<ol>
<li>尽量不采用iframe的方式对接统一认证</li>
<li>跨域对接keycloak不能使用iframe方式</li>
</ol>
<h1 id="跨域iframe如果支持需要修改浏览器配置">跨域iframe如果支持,需要修改浏览器配置</h1>
<p><img alt="" loading="lazy"></p>
</div>
<div id="MySignature" role="contentinfo">
<p></p>
<div class="navgood">
<p>作者:仓储大叔,张占岭,<br>
荣誉:微软MVP<br>QQ:853066980</p>
<p><strong>支付宝扫一扫,为大叔打赏!</strong>
<br><img src="https://images.cnblogs.com/cnblogs_com/lori/237884/o_IMG_7144.JPG"></p>
</div><br><br>
来源:https://www.cnblogs.com/lori/p/19178748
頁:
[1]