【问题标题】:How to refresh the token in Azure AD B2C, not the Access & ID one, the "Lifetime" one如何刷新 Azure AD B2C 中的令牌,而不是访问和 ID 之一,“生命周期”之一
【发布时间】:2021-11-10 03:46:06
【问题描述】:

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

静默令牌似乎映射到 Azure 门户中的 访问和 ID 令牌生命周期(分钟)

susi 的用户流似乎映射到门户中的生命周期(天)

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

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

更新

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

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

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

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

【问题讨论】:

    标签: azure-ad-b2c aad-b2c


    【解决方案1】:

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

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

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

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

    如果您不想强制用户在 90 天后重新进行身份验证,您可以将 Lifetime length 设置为最大值 365 天或设置 刷新令牌滑动窗口生命周期 到 没有过期

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

    【讨论】:

    • 所以我可以创建代码以重新进行身份验证并保持设置不变,或者将“刷新令牌滑动窗口生命周期”设置为“无过期”,对吗?如果用户在 14 天之后尝试访问 API 怎么办?我是否需要他们重新进行身份验证?
    • 是的,没错。如果用户在 14 天之后尝试访问 API,则刷新令牌将过期,并且需要交互式身份验证才能获取新的刷新令牌。
    猜你喜欢
    • 2020-09-27
    • 2020-03-09
    • 2020-02-26
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 2017-11-23
    相关资源
    最近更新 更多