使用 SPA 时在 identityServer 端保持会话活动
Keep a session active on the identityServer side while using SPA
我们有 3 个应用程序:管理站点 运行 IdentityServer、SPA、带有休息服务的 webapi。
在第一个(使用 IdentityServer)上,我们有一些额外的管理员 ui。存在一项要求ui,即连接的用户无需身份验证即可从我们的 SPA 应用程序无缝转到此管理员 ui。因此,通过重定向从一个 Web 应用程序到另一个 Web 应用程序。
问题是如何使两个 'sessions' 保持同步,以便 none 在至少一个正在使用时过期?
问题示例:
应用设置:
- spa_web.com - 我们的 spa 应用程序 -> 获取有效期为 1 小时的访问令牌和刷新令牌。
- authorityWithIdServer.com - 我们的 ID 提供商网站 -> 有一个 cookie 维护会话设置为 1 小时到期。
步骤:
1. 首先我们去spaWeb.com。
2. 用户需要进行身份验证,因此被重定向到 authorityWithIdServer.com 并填写登录表单。
3. 使用授权代码流,我们被重定向回 spaWeb.com 并最终获得本地存储的访问令牌和刷新令牌。
4. 我们只使用了几个小时的水疗应用程序。我们的访问令牌使用刷新令牌定期更新。
5. 现在我们决定去 authorityWithIdServer.com 上的管理员 ui。
6. 我们再次获取登录表单以登录该应用程序。
是否可以在我们使用 spaWeb.com 时滑动 authorityWithIdServer.com 的 cookie,以免被迫再次登录。
- 您不应在客户端应用程序中使用刷新令牌。更改为授权代码并使用无提示(iframe 中的
prompt=none
)更新令牌的方式。 oidc-client-js
开箱即用地实现了会话监控。
- 如果您执行上述操作,那么由于续订请求是通过
authorize
端点在浏览器的上下文中发生的,因此 IDP 的身份验证是通过 cookie 完成的,因此任何滑动逻辑都会自动启动。
另请注意,identityserver4
允许您控制客户端必须通过授权端点 max_age
参数和 UserSsoLifetime
客户端设置进行交互身份验证的频率。
我们有 3 个应用程序:管理站点 运行 IdentityServer、SPA、带有休息服务的 webapi。
在第一个(使用 IdentityServer)上,我们有一些额外的管理员 ui。存在一项要求ui,即连接的用户无需身份验证即可从我们的 SPA 应用程序无缝转到此管理员 ui。因此,通过重定向从一个 Web 应用程序到另一个 Web 应用程序。
问题是如何使两个 'sessions' 保持同步,以便 none 在至少一个正在使用时过期?
问题示例: 应用设置:
- spa_web.com - 我们的 spa 应用程序 -> 获取有效期为 1 小时的访问令牌和刷新令牌。
- authorityWithIdServer.com - 我们的 ID 提供商网站 -> 有一个 cookie 维护会话设置为 1 小时到期。
步骤: 1. 首先我们去spaWeb.com。 2. 用户需要进行身份验证,因此被重定向到 authorityWithIdServer.com 并填写登录表单。 3. 使用授权代码流,我们被重定向回 spaWeb.com 并最终获得本地存储的访问令牌和刷新令牌。 4. 我们只使用了几个小时的水疗应用程序。我们的访问令牌使用刷新令牌定期更新。 5. 现在我们决定去 authorityWithIdServer.com 上的管理员 ui。 6. 我们再次获取登录表单以登录该应用程序。
是否可以在我们使用 spaWeb.com 时滑动 authorityWithIdServer.com 的 cookie,以免被迫再次登录。
- 您不应在客户端应用程序中使用刷新令牌。更改为授权代码并使用无提示(iframe 中的
prompt=none
)更新令牌的方式。oidc-client-js
开箱即用地实现了会话监控。 - 如果您执行上述操作,那么由于续订请求是通过
authorize
端点在浏览器的上下文中发生的,因此 IDP 的身份验证是通过 cookie 完成的,因此任何滑动逻辑都会自动启动。
另请注意,identityserver4
允许您控制客户端必须通过授权端点 max_age
参数和 UserSsoLifetime
客户端设置进行交互身份验证的频率。