什么是刷新令牌,我们可以控制刷新 AADB2C 中的 ID 和访问令牌吗?

时间:2021-05-18 23:08:03

标签: azure-active-directory azure-ad-b2c access-token refresh-token cache-expiration

我的团队正在为我们客户的移动应用实施或配置 B2C 登录。我们将配置设置到用户可以登录应用程序一次并且令牌缓存在 MSAL 中的程度。下次,用户无需输入凭据即可直接登录。我们遵循所描述的模式 here

我们的代码首先尝试使用 AcquireTokenSilent 检索令牌,如果 MSAL 缓存中不存在令牌,则我们使用 AcquireTokenInteractive 检索它。

我试图了解如何刷新 ID 和访问令牌并在有关令牌的 MS 文档 here 上找到该令牌

<块引用>

刷新令牌用于获取新的 ID 令牌和访问令牌 OAuth 2.0 流程。它们代表用户为您的应用程序提供对资源的长期访问权限,而无需与这些用户交互...

这也提到,当我们兑换刷新令牌来获取新的 ID 和访问令牌时,我们也会得到一个新的刷新令牌来替换之前的刷新令牌。

现在我尝试注销并在 1 小时或更长时间后重新登录我的移动应用程序,但我仍然能够登录。当我检查声明时,ID 和访问令牌过期时间被刷新到登录后的下一个 1 小时。

我的问题是:

  1. 由于 ID 令牌和访问令牌的默认到期时间为 1 小时,那么即使我注销了一个多小时,我的令牌也刷新了,并且无需输入用户凭据即可登录。
  2. 如果这是因为刷新令牌在接近到期时会自动刷新 ID 和访问令牌,那么此过程会一直持续到刷新令牌自行到期。
  3. MS 文档还提到,当 ID 和访问令牌到期后重新生成时,我们还会获得一个新的刷新令牌。如果是这种情况,则刷新令牌将永远不会过期,因为新令牌将始终有新的过期时间。
  4. 有没有办法控制刷新令牌,以便我们可以控制何时刷新 ID 和访问令牌。

如果我错过了什么,我很抱歉,但我对刷新令牌的工作方式有点困惑,有没有办法控制何时刷新令牌,何时不刷新。

提前致谢。

1 个答案:

答案 0 :(得分:0)

是的,刷新令牌用于获取新的id令牌和访问令牌,即使id令牌和访问令牌已过期,只要刷新令牌没有过期,就可以使用刷新令牌获取新的id令牌和访问令牌,同时会生成一个新的刷新令牌,如果你想配置令牌的生命周期,你可以在门户中进行。

参考 - https://docs.microsoft.com/en-us/azure/active-directory-b2c/configure-tokens?pivots=b2c-user-flow