【问题标题】:IdP as the master sessionIdP 作为主会话
【发布时间】:2022-12-14 10:00:15
【问题描述】:

背景

我正在尝试从现有的单页应用程序为本机移动应用程序实现 browser-based login。它使用WebView 来呈现 SPA,并使用 Keycloak OIDC 作为其身份提供者。

SPA 和 IdP 位于完全不同的域中,身份验证是通过在成功登录后重定向到 SPA 域并从 SPA 服务器之一的 IdP 域检索活动会话(cookie)来完成的。这是通过使用 keycloak 中间件实现的,我相信它是 postAuth

概括:

  1. 执行登录 -> auth.idp.com
  2. 重定向 -> best.app.com
  3. 是登录吗? -> best.app.com/login
    • auth.idp.com 会话是否存在?
  4. 用户已登录,重定向 -> best.app.com
    • Token 在 URL 中传递,仅存储在内存中
    • Token用于建立WebSocket连接

    问题

    基于the spec,授权应该在浏览器/应用内浏览器中进行,并且授权码必须通过自定义 URL 方案传递。考虑到这一点,驻留在本机移动应用程序 WebView 中的 SPA 将永远不会从 IdP 的域建立会话,因为这将从处于不同进程的浏览器委派,并且显然使用与 @ 不同的 cookie 存储987654329@ 在移动应用程序中,这使得我们现有的解决方案无法解决,因为它依赖于 IdP 的域 cookie。

    建议的解决方案

    我上面描述的问题可以通过减少对 IdP 会话的依赖和管理 SPA 自己的会话来缓解,这基本上意味着持久存储可以从 IdP 获得的令牌(当前解决方案不这样做)。

    (我不想详细介绍解决方案,因为我只想首先关注存储令牌的概念。我认为最好单独讨论。)

    观点

    1. 目前的实施似乎并没有真正遵循 OIDC 流程的最佳实践,但不知何故,Keycloak 制作了一些中间件来消除使用这些令牌(授权和访问令牌)的需要
    2. 在实施 SPA 或非 Web 应用程序时依赖 IdP 的会话似乎不是一种选择,因为无法获取 cookie。
    3. 重定向到 IdP 的会话不是 SPA 的良好用户体验。在这里看到同样的情绪,但似乎没有任何答案:https://lists.jboss.org/pipermail/keycloak-user/2016-October/007937.html

      问题

      关于我提出的解决方案,即存储从 IdP 检索到的令牌:

      1. 是否存在任何安全漏洞或将要引入的非行业标准?如果是这样,那些是什么?
      2. OIDC 流程是否通常依赖 IdP 的会话(cookie)来检查现有会话?
      3. 如果#2 的回答是否定的,该解决方案是仅针对 Keycloak 的,还是也适用于其他 IdP?
      4. 知道我们的目标是 SPA 后,当前的实施是否存在缺陷?

【问题讨论】:

    标签: node.js session cookies keycloak single-page-application


    【解决方案1】:

    IDP Education 为学生及其家长提供免费的一对一留学咨询服务。您可以由该行业的专家回答有关招生、即将入学、最佳课程和大学、奖学金、毕业后工作权利和签证程序的所有问题。

    【讨论】:

      猜你喜欢
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 2014-05-04
      • 2019-02-07
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多