gpt4 book ai didi

oauth-2.0 - Keycloak JS 库 : iframe redirect when already logged in

转载 作者:行者123 更新时间:2023-12-03 14:48:58 25 4
gpt4 key购买 nike

我正在开发一个使用 keycloak.js 与我的 Keycloak 服务器交互的 SPA。我使用 onload = ‘check-sso’ 和 checkLoginIFrame 来初始化 Keycloak 对象。

如果我执行以下步骤:

  • 加载我的网站
  • 单击我的“登录”按钮(调用 Keycloak.login())
  • 重定向到 Keycloak 的登录页面,登录,重定向回我的应用
  • 重新加载我的网站

  • 我观察到,当站点重新加载时,它会进行快速重定向(URL 从 mysite.com 短暂更改为 mysite.com/#state=..... 然后返回 mysite.com)。
    当我已经登录时,我想避免进行这种重定向。

    通过调试代码,我发现了为什么会发生这种情况:
  • 登录状态 iframe.html page 本质上只是一些静态 JS 的包装器,用于管理存储身份验证 token 的 cookie。
  • 其主要方法 checkState(...)在初始化期间调用(通过来自 keycloak.js 的消息)......没有 token (sessionState 为空,因为 keycloak.js 不知道 cookie)。
  • 登录 iFrame 的代码读取 cookie 并创建一个 XHR 请求到 mykeycloak.com/.../login-status-iframe.html/init?...(带有请求 header 中的 cookie)。
  • 当它收到 204 响应时(我的意思是:cookie 有效,一切正常),它将 token (来自 cookie)与从 keycloak.js 提供的 token (即什么都没有)进行比较。
  • 由于它们不相等,因此它以“已更改”来响应回调。
  • 这在 keycloak.js 中被解释为( token 改变了?),因此它调用 doLogin(false) ,这是它更改 URL 的地方,创建不需要的重定向。

  • 所以我的问题是:
  • 调用 的 API 文档在哪里?登录状态 iframe.html/init ?
  • 是否有可能做这样的事情:
  • 让 login-status-iframe 返回 token ,当 KC 服务器通知它 token 仍然有效时(例如“更新 XXXXX”而不是“已更改”)
  • 然后 keycloak.js 会接受这个并更新它的 token ,而不必调用 doLogin()
  • 最佳答案

    如果您将 keycloak 的版本与 keycloak.js 保持相同,将会很有帮助。我也面临无限重定向,我使用的keycloak版本是11.0.1,keycloak.js是旧版本。所以我用来自 keycloak-js-adapter-dist-11.0.1.zip(从 https://www.keycloak.org/archive/downloads-11.0.1.html 下载)的文件替换它。那么无限重定向问题就解决了。

    关于oauth-2.0 - Keycloak JS 库 : iframe redirect when already logged in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55606931/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com