MSAL 何时可以刷新令牌?

Bet*_*ker 1 c# access-token azure-ad-msal

根据该网站,“AcquireTokenSilent 能够......在令牌接近过期时刷新令牌(因为令牌缓存还包含刷新令牌)”,这很棒,但是允许 MSAL 刷新时有哪些限制一个令牌?

这个 stackoverflow 问题意味着有时服务器会发送一个特殊的刷新令牌,但是当我调用 App.PCA.AcquireToken...() 时,它返回一个 AuthenticationResult 类型的对象,该对象没有任何名为 Refresh 之类的成员(在我们的 Xamarin 中) /C# app) 所以看起来实际上并没有一个单独的令牌仅用于计算刷新?

AcquireTokenSilent() 是否需要访问互联网?它总是与服务器检查吗?

Jea*_*eur 5

AcquireTokenSilent 将在令牌缓存中搜索当前帐户的访问令牌。如果没有找到,它将抛出 MsalUiRequiredException:

  • 如果找到这样的访问令牌并且它尚未接近过期,它将返回此访问令牌(AuthenticationResult 的一部分)。这不需要访问互联网
  • 如果找到这样的访问令牌,但它已过期或接近过期,AcquireTokenSilent 将使用令牌缓存中与帐户关联的刷新令牌(而不是通过 API 显示),并获取新的访问令牌和刷新令牌,并将它们存储起来缓存中,并返回访问令牌。此场景确实需要互联网连接

在某些微妙的情况下,在刷新令牌时,Microsoft 身份平台将决定需要 MFA 或某种交互,在这种情况下,AcquireTokenSilent 也可能引发 MsalUiRequiredException。有关详细信息,请参阅https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-handling-exceptions#msaluirequiredexception