【问题标题】:Keep a session active on the identityServer side while using SPA使用 SPA 时在 identityServer 端保持会话处于活动状态
【发布时间】:2020-04-09 19:33:22
【问题描述】:

我们有 3 个应用程序:运行 IdentityServer、SPA、带有休息服务的 webapi 的管理站点。

在第一个(使用 IdentityServer)上,我们有一些额外的管理 ui。存在一个要求,即连接的用户无需身份验证即可从我们的 SPA 应用程序无缝转到此管理 ui。因此,通过重定向从一个 Web 应用程序到另一个 Web 应用程序。

问题是如何使两个“会话”保持同步,以便在至少一个正在使用时不会过期?

问题示例: 应用设置:

  1. spa_web.com - 我们的 spa 应用程序 -> 获取有效期为 1 小时的访问令牌和刷新令牌。
  2. authorityWithIdServer.com - 我们的 ID 提供者网站 -> 有一个 cookie 维护会话设置为 1 小时到期。

步骤: 1. 首先我们去 spaWeb.com。 2. 用户需要通过身份验证,因此被重定向到 authorityWithIdServer.com,他在此填写登录表单。 3. 使用授权码流,我们被重定向回 spaWeb.com 并最终获得本地存储的访问令牌和刷新令牌。 4. 我们只使用 spa 应用程序几个小时。我们的访问令牌会使用刷新令牌定期更新。 5. 现在我们决定转到 authorityWithIdServer.com 上的管理界面。 6. 我们再次获取登录表单以登录该应用程序。

是否可以在我们使用 spaWeb.com 时滑动 authorityWithIdServer.com 的 cookie,以免被强制再次登录。

【问题讨论】:

  • 为什么要投反对票?

标签: oauth identityserver4 openid-connect asp.net-core-3.0


【解决方案1】:
  1. 您不应在客户端应用程序中使用刷新令牌。更改为授权代码并使用静默(iframe 中的prompt=none)方式更新令牌。 oidc-client-js 开箱即用地实现了这一点以及会话监控。
  2. 如果您执行上述操作,那么由于续订请求是通过 authorize 端点在浏览器上下文中发生的,因此 IDP 的身份验证是通过 cookie 完成的,那么任何滑动逻辑都会自动启动。

另请注意,identityserver4 允许您通过授权端点 max_age 参数和 UserSsoLifetime 客户端设置控制客户端必须以交互方式进行身份验证的频率。

【讨论】:

  • 感谢您的回复。我将尝试您建议的方式,无需刷新令牌。
猜你喜欢
  • 2018-11-26
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2019-02-25
  • 2017-10-21
  • 2019-11-07
相关资源
最近更新 更多