使用 OIDC 时刷新 Web 应用程序会话

问题描述 投票:0回答:1

我正在尝试在我的 Web 应用程序中使用基于 OIDC 的 SSO 集成。这个想法是,部署应用程序的任何人都应该能够插入 OIDC 配置(众所周知的 url、客户端 id 和密钥),并且可以配置任何 OIDC 提供程序,如 Okta、Auth0、PingID 等。我的 web 应用程序是一个带有后端服务器端的 SPA API。我使用授权流程来获取 id 和访问令牌。

成功获取访问令牌后,我们将使用我们自己的 JWT 令牌,SPA 使用该令牌与 API 进行通信。在 OIDC 集成之前,JWT 方法已在应用程序中使用。

虽然我不需要访问 OIDC 提供商公开的任何 API 端点,但我决定根据访问令牌来设置应用程序 JWT 过期时间。并使用刷新令牌刷新 SPA 中的会话。

我的印象是访问令牌的 TTL 可以在 OIDC 提供商中轻松配置,但事实似乎并非如此。这个想法是保持访问令牌的 ttl 较低并经常使用刷新令牌。

看起来无法在 OIDC 配置中轻松设置访问令牌的 TTL。看来访问令牌的 ttl 与提供商对 API 的打包和使用相关,请参见例如:

https://community.auth0.com/t/need-help-changing-token-expiration-time-in-authentication-api-response/104251/7

https://support.pingidentity.com/s/question/0D5Do00000iPpHEKA0/how-to-customise-the-access-token-expiry-duration-in-pingone

使用访问令牌的过期时间来管理会话的想法是否不正确?

我应该使用 ID 令牌的过期时间,这似乎是错误的,因为它实际上不能用于访问任何资源。 我是否误解了 OIDC 的任何要点?

single-sign-on openid-connect auth0 okta
1个回答
0
投票

通过发布您自己的 JWT,ypu 的作用就像一个授权服务器 (AS),它在如下流程中使用:

  • 客户端运行代码流到AS
  • AS 运行到身份提供商 (IDP) 的代码流,身份提供商向 AS 颁发一组令牌
  • AS 然后向客户端发出一组代币

这使您的应用程序和 API 能够接收一致的令牌,无论使用什么 IDP:

  • 客户端然后将短期(AS 发行)访问令牌发送到其 API
  • 用户的会话时间由(AS 发行的)刷新令牌的生命周期表示

因此,我的目标是以类似的方式对您的行为进行建模,或者使用 AS 来为您管理外部连接。

© www.soinside.com 2019 - 2024. All rights reserved.