azure-ad-b2c - 如何刷新 Azure AD B2C 中的令牌,而不是访问和 ID 之一,“生命周期”之一
问题描述
我正在将 MSAL 用于带有 Android 的 B2C,并且我一直在关注这个示例。首次登录时,当我需要调用 API 并且我的令牌已过期时,我使用 #1获取令牌/运行用户流和 #3获取令牌静默。
静默令牌似乎映射到Azure 门户中的访问和 ID 令牌生命周期(分钟)。
我认为 90 天已经到了,那么我该怎么做才能刷新该令牌以及如何判断我是否接近 90 天?
也许我没有完全理解这一点。
更新
好的,我看到下面的回复很有帮助,但我不知道根据所提供的信息,我的用例是否或如何实现。
这是用例:我有一个可以在断开模式下使用的应用程序,并且经常在共享设备上使用。该应用程序确实需要连接才能下载并在设备上进行用户注册。当设备连接时,它也会将数据发送到云端,但会在本地存储。将数据发送到云时,需要静默刷新令牌。
所有这些都一直有效,直到 90 天到期,我需要重新进行身份验证。这将是一个很好的策略,但考虑到应用程序的断开连接性质,我想在倒计时越来越近时开始使用小吃栏询问用户。根据响应,现在可以确定 90 的到期时间,我认为这是因为 profile.getExpiresOn() 似乎保留了访问令牌的到期日期(60 分钟)并恢复到配置文件的日期当 90 天用完时创建。至少我认为这是正在发生的事情。我希望我可以访问这两个日期,但我想我没有,这就是我认为在下面得到确认的内容。
其他人有这样的用例吗?看起来它可能并不罕见,并且可以看到 90 天令牌到期日期的需要。
解决方案
为了完全理解这一点,您需要了解以下设置之间的区别以及这些设置的含义。
刷新令牌有效期默认为 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 以查看上次向用户发出刷新令牌的时间。
推荐阅读
- mysql - 在 jenkinsfile 中找不到 mysqldump
- elasticsearch - 弹性搜索(6.2.4)使用 RestHighLevelClient 连接
- laravel - 如何将混合配置更改为 vue.config.js
- android - com.android.tools.r8.errors.CompilationError:程序类型已经存在:androidx.annotation.AnimRes
- c# - 梭子鱼电子邮件加密
- reactjs - 不要重新安装组件,而是更改值
- php - 更改表格整列的时区
- tensorflow - 如何从 TFRecordDataset 获取张量的形状
- go - 是否有扩展 ipv6 地址的内置功能?
- c# - 使用 Emgu CV 进行模板匹配 - 不适用于多个模板