首页 > 解决方案 > 如何刷新 Azure AD B2C 中的令牌,而不是访问和 ID 之一,“生命周期”之一

问题描述

我正在将 MSAL 用于带有 Android 的 B2C,并且我一直在关注这个示例。首次登录时,当我需要调用 API 并且我的令牌已过期时,我使用 #1获取令牌/运行用户流和 #3获取令牌静默。

静默令牌似乎映射到Azure 门户中的访问和 ID 令牌生命周期(分钟)在此处输入图像描述

susi 的用户流似乎映射到门户中的生命周期长度(天)在此处输入图像描述

我认为 90 天已经到了,那么我该怎么做才能刷新该令牌以及如何判断我是否接近 90 天?

也许我没有完全理解这一点。

更新

好的,我看到下面的回复很有帮助,但我不知道根据所提供的信息,我的用例是否或如何实现。

这是用例:我有一个可以在断开模式下使用的应用程序,并且经常在共享设备上使用。该应用程序确实需要连接才能下载并在设备上进行用户注册。当设备连接时,它也会将数据发送到云端,但会在本地存储。将数据发送到云时,需要静默刷新令牌。

所有这些都一直有效,直到 90 天到期,我需要重新进行身份验证。这将是一个很好的策略,但考虑到应用程序的断开连接性质,我想在倒计时越来越近时开始使用小吃栏询问用户。根据响应,现在可以确定 90 的到期时间,我认为这是因为 profile.getExpiresOn() 似乎保留了访问令牌的到期日期(60 分钟)并恢复到配置文件的日期当 90 天用完时创建。至少我认为这是正在发生的事情。我希望我可以访问这两个日期,但我想我没有,这就是我认为在下面得到确认的内容。

其他人有这样的用例吗?看起来它可能并不罕见,并且可以看到 90 天令牌到期日期的需要。

标签: azure-ad-b2caad-b2c

解决方案


为了完全理解这一点,您需要了解以下设置之间的区别以及这些设置的含义。

刷新令牌有效期默认为 14 天,这意味着您可以在刷新令牌发行后的 14 天内赎回刷新令牌。当您兑换 Refresh 令牌时,会颁发一个新的 Access、ID 和 Refresh 令牌对。新的刷新令牌的有效期为 14 天。

  • 如果您将刷新令牌滑动窗口生命周期设置为有界生命周期长度为 90 天,则无论最近一次刷新令牌何时发布,用户都需要重新进行身份验证。

  • 如果您将Refresh token 滑动窗口生命周期设置为no expiry,则生命周期长度将不再可配置。在这种情况下,如果刷新令牌在每 14 天(在刷新令牌生命周期中配置)被赎回,用户将永远不必重新进行身份验证。

如果您不想强制用户在 90 天后重新进行身份验证,您可以将Lifetime length设置为其最大值 365 天,或者将Refresh token 滑动窗口生命周期设置为no expiry

在刷新令牌到期之前,您不会收到任何通知。但是,您可以通过 Graph API 检查 signInSessionsValidFromDateTime 属性或通过 PowerShell 检查 refreshTokensValidFromDateTime 以查看上次向用户发出刷新令牌的时间。


推荐阅读