如何在SPA(ADB2C)中关闭浏览器并超过24小时后保持用户登录



当前Azure AD B2C为使用PKCE代码流的单页应用程序颁发24小时有效的刷新令牌(不可配置,不可再生(。

当从首次登录起的24小时到期时,用户需要使用AD B2C重新进行身份验证。如果浏览器在此期间关闭,则AD B2C会话将丢失,现在用户必须以交互方式重新进行身份验证。我不明白这怎么会成为大多数网络应用程序可以接受的默认用户体验。

有什么办法解决这个问题吗?也许是一种使AD B2C会话持久化的方法,这样它就可以在浏览器关闭时幸存下来,并避免完全的交互式重新身份验证。我不想拥有世界上唯一一个需要用户每24小时再次登录的网络应用程序。

编辑:我们正在使用外部身份提供程序,因此本地帐户的KMSI并没有真正的帮助。

您可以使用保持我的登录来延长用户的Azure AD B2C会话寿命。

请参阅:https://learn.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-keep-me-signed-in

更新:

Azure AD B2C会话Cookie将始终首先进行评估,以确定是否应将用户发送回其联合IdP以进行新的身份验证。只有当Azure AD B2C会话cookie联合IdP会话cookie都过期时,用户才必须在联合IdP处重新输入其凭据。

为了防止用户必须返回到联合IdP进行身份验证,您可以将AAD B2C会话cookie的生存期提高到超过联合IdP会话cookie的寿命。

使用自定义策略时,可以使用会话管理技术配置文件来确保联合IdP身份验证是会话本身的一部分。

看看我们是如何使用SM SocialLogin为Google IdP做到这一点的:
https://learn.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-custom-setup-goog-idp#add-a索赔提供商

<UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />

将这一行添加到联合IdP技术配置文件中,以确保它是AAD B2C会话的一部分。

一旦你关闭了应用程序,你可能需要再次登录,因为你的应用程序cookes没有持久化。

如果用户以前使用KMSI登录,您可以维护应用程序设置的cookie,以便通过登录端点自动发送给用户。您可以使用声明解析程序将KMSI声明发送到令牌中,这样您的应用程序就可以了解使用KMSI登录的用户。https://learn.microsoft.com/en-us/azure/active-directory-b2c/claim-resolver-overview

SessionExpiryType/SessionExpiryInSeconds-与KMSI cookie无关。与B2Cs正常SSO Cookie相关。

KeepAliveInDays-KMSI Cookie生存期。

请参阅此文档以获取更清晰的信息

https://learn.microsoft.com/en-us/azure/active-directory-b2c/relyingparty#userjourneybehaviors

最新更新