我的团队正在为我们客户的移动应用程序实施或更确切地说配置 B2C 登录。我们将配置设置到用户可以登录到应用程序一次并且令牌缓存在 MSAL 中的程度。下次以后,用户可以直接登录而无需输入他/她的凭据。我们遵循此处描述的模式
我们的代码首先尝试使用检索令牌AcquireTokenSilent
,如果该令牌不存在于 MSAL 缓存中,那么我们使用检索它AcquireTokenInteractive
。
我试图了解如何刷新 ID 和访问令牌,并在此处的 MS 文档中找到关于令牌的内容
刷新令牌用于在 OAuth 2.0 流中获取新的 ID 令牌和访问令牌。它们代表用户为您的应用程序提供对资源的长期访问权限,而无需与这些用户交互...
这里也提到了,当我们兑换刷新令牌来获取新的 ID 和访问令牌时,我们也会得到一个新的刷新令牌来替换之前的刷新令牌。
现在我尝试注销并在 1 小时或更长时间后重新登录我的移动应用程序,但我仍然能够登录。当我检查声明时,ID 和访问令牌到期被刷新到下一个 1 小时的登录时间。
我的问题是:
- 由于 ID 令牌和访问令牌的默认有效期为 1 小时,那么即使我注销了一个多小时,我的令牌也刷新了,而且我能够在不输入用户凭据的情况下登录。
- 如果这是因为刷新令牌会在 ID 和访问令牌接近到期时自动刷新,那么此过程会一直持续到刷新令牌自己到期。
- MS 文档还提到,当 ID 和 Access 令牌过期后重新生成时,我们还会获得一个新的刷新令牌。如果是这种情况,那么刷新令牌将永远不会过期,因为新令牌将始终具有新的过期时间。
- 有没有办法控制刷新令牌,以便我们可以控制何时刷新 ID 和访问令牌。
如果我错过了什么,我很抱歉,但我对刷新令牌的工作原理有点困惑,有没有办法控制何时刷新令牌,何时不刷新。
提前致谢。