google-chrome - Keycloak:使用新的 Chrome SameSite/Secure cookie 强制执行 token 请求中缺少 session cookie

标签 google-chrome single-sign-on redhat keycloak keycloak-services

最近,我使用 Keycloak 的应用程序在身份验证后停止处理 400 token 请求。

到目前为止,我发现在 token 请求中,Keycloak cookie(AUTH_SESSION_ID、KEYCLOAK_IDENTITY、KEYCLOAK_SESSION)未在请求 header 中发送,导致 token 请求失败并且应用程序收到 session 错误。

通过深入挖掘,我发现 Chrome 现在阻止了没有设置 SameSite 属性的 cookie,keycloak cookie 就是这种情况,这就是为什么它们在身份验证后从未在 token 获取请求中解析的原因。

我得到的错误:-

enter image description here
https://blog.chromium.org/2019/10/developers-get-ready-for-new.html

https://adzerk.com/blog/chrome-samesite/

这是非常严重的,因为它阻止了 Keycloak 库保护的应用程序能够与 keycloak 服务器通信。

更新 : 使用新的 google chrome cookie SameSite 属性,任何使用 cookie 的第三方库没有正确设置 SameSite 属性,cookie 将被忽略。
https://blog.chromium.org/2019/10/developers-get-ready-for-new.html

https://www.chromium.org/updates/same-site

最佳答案

如果您在使用 keycloak-js 时遇到此问题适配器。
那么出现这个问题的原因:
默认情况下,JavaScript 适配器会创建一个隐藏的 iframe,用于检测是否发生了单点注销。这不需要任何网络流量,而是通过查看特殊状态 cookie 来检索状态。
解决方法(不是修复):
可以通过在传递给 init 方法的选项中设置 checkLoginIframe: false 来禁用此功能。
例如,
keycloak.init({
onLoad: '需要登录',
checkLoginIframe: 假
})

关于google-chrome - Keycloak:使用新的 Chrome SameSite/Secure cookie 强制执行 token 请求中缺少 session cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60622192/

相关文章:

javascript - Facebook JS API 不适用于渐进式网络应用

single-sign-on - 如何让 GoodData PGP SSO 工作?

linux - 如何移动第一行包含字符串的文件?

active-directory - 单点登录 (SSO) : How to use Active Directory as an authentication method for CAS service?

python-2.7 - pip升级pyzmq时gcc失败

linux - 在 Redhat Linux 上安装 Mercurial

JavaScript 对象对于所有版本的 Google Chrome 都是唯一的?

python - 如何使用python访问chrome开发者工具中的网络选项卡

jquery - Chrome 自动完成文本输入可防止触发 keydown 事件(jquery)

iphone - SSO 登录对话框返回到 fbDidNotLogin,没有错误指示