刷新令牌是否与 OIDC IdentityServer Azure AD SSO 实施相关?
Is Refresh Token relevant for OIDC IdentityServer Azure AD SSO Implementation?
我有一个 IdentityServer4 的实现,它与 Azure AD 连接以进行身份验证 (OIDC)。在回调方法中,我使用 IdentityServertools 生成 access_token 并将用户重定向到 SPA。然后 SPA 将 access_token 存储到本地存储中并将其用于身份验证。
通常,当我的 SPA 应用程序访问 IdentityServer4 的令牌端点时,它会给出 access_token 和 refresh_token,然后使用 refresh_token 重新验证返回的用户。
在使用 Azure AD 进行单点登录的情况下,我是否需要手动生成 refresh_token?如果是,我可以在默认实现之上构建,这不是问题 (However, the docs suggest against of changing the IRefreshTokenService implementation or building something from scratch)
我真正的问题是,这里需要 refresh_token 吗?因为 refresh_tokens 存储在数据库中并且永远不会被删除,并且在一段时间后,这些 refresh_tokens table 将会膨胀(现在它已经有 80k 行)。用户应单击 SAP Successfactor 内的一个小磁贴 - 这将打开 Azure 的 signin/consent 屏幕或直接将用户带到主页,zhe 将在那里回答问题并完成。所以这几乎不是 2-3 分钟的业务。因此,我可以继续为每次点击从我的 IdentityServer4 生成 access_tokens,因为如果用户从 SAP 的 Successfactor(或与 Azure 链接的任何其他应用程序)注销,我不希望用户在浏览器中保持身份验证。
请指教,我是否应该生成refresh_token?它是一个好的架构吗?
访问令牌用于证明允许请求访问资源(例如api来自ms或您的自定义api),刷新令牌用于刷新访问令牌以确保访问令牌未过期。默认情况下,访问令牌将在一小时后过期,刷新令牌有 90 天。
此时,我们很容易发现刷新令牌是为一些特殊场景设计的,因为刷新令牌的过期时间比访问令牌的过期时间长得多,但我们也可以通过其他方式生成新的访问令牌比如使用msal或者重新登录。
正如您在问题中所说,您可以通过单击生成访问令牌,并且您不希望用户长时间保持身份验证。所以我认为你没有必要使用刷新令牌。
我有一个 IdentityServer4 的实现,它与 Azure AD 连接以进行身份验证 (OIDC)。在回调方法中,我使用 IdentityServertools 生成 access_token 并将用户重定向到 SPA。然后 SPA 将 access_token 存储到本地存储中并将其用于身份验证。
通常,当我的 SPA 应用程序访问 IdentityServer4 的令牌端点时,它会给出 access_token 和 refresh_token,然后使用 refresh_token 重新验证返回的用户。
在使用 Azure AD 进行单点登录的情况下,我是否需要手动生成 refresh_token?如果是,我可以在默认实现之上构建,这不是问题 (However, the docs suggest against of changing the IRefreshTokenService implementation or building something from scratch)
我真正的问题是,这里需要 refresh_token 吗?因为 refresh_tokens 存储在数据库中并且永远不会被删除,并且在一段时间后,这些 refresh_tokens table 将会膨胀(现在它已经有 80k 行)。用户应单击 SAP Successfactor 内的一个小磁贴 - 这将打开 Azure 的 signin/consent 屏幕或直接将用户带到主页,zhe 将在那里回答问题并完成。所以这几乎不是 2-3 分钟的业务。因此,我可以继续为每次点击从我的 IdentityServer4 生成 access_tokens,因为如果用户从 SAP 的 Successfactor(或与 Azure 链接的任何其他应用程序)注销,我不希望用户在浏览器中保持身份验证。
请指教,我是否应该生成refresh_token?它是一个好的架构吗?
访问令牌用于证明允许请求访问资源(例如api来自ms或您的自定义api),刷新令牌用于刷新访问令牌以确保访问令牌未过期。默认情况下,访问令牌将在一小时后过期,刷新令牌有 90 天。
此时,我们很容易发现刷新令牌是为一些特殊场景设计的,因为刷新令牌的过期时间比访问令牌的过期时间长得多,但我们也可以通过其他方式生成新的访问令牌比如使用msal或者重新登录。
正如您在问题中所说,您可以通过单击生成访问令牌,并且您不希望用户长时间保持身份验证。所以我认为你没有必要使用刷新令牌。