MSAL何时可以刷新令牌?

时间:2019-10-03 22:57:46

标签: c# access-token msal

根据this site,“ AcquireTokenSilent能够...在接近到期时刷新令牌(因为令牌缓存也包含刷新令牌)”,这很好,但是对它的限制是什么什么时候允许MSAL刷新令牌?

This stackoverflow question表示有时服务器会发送一个特殊的刷新令牌,但是当我调用App.PCA.AcquireToken ...()时,它将返回一个AuthenticationResult类型的对象,该对象没有任何类似以下名称的成员刷新(在我们的Xamarin / C#应用程序中),因此似乎实际上没有单独的令牌只能用来计算刷新吗?

AcquireTokenSilent()是否需要Internet访问?是否总是通过服务器签入?

1 个答案:

答案 0 :(得分:3)

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

  • 如果找到了这样的访问令牌,并且该令牌即将到期,它将返回该访问令牌(AuthenticationResult的一部分)。这不需要互联网访问
  • 如果找到了这样的访问令牌,但是它已过期或接近到期,则AcquireTokenSilent将使用与令牌缓存中的帐户关联的刷新令牌(并且不会通过API浮出水面),并获取新的访问令牌和刷新令牌,将它们存储在缓存中,然后返回访问令牌。这种情况确实需要Internet连接

在一些微妙的情况下,当刷新令牌时,Microsoft身份平台将决定是否需要MFA或某种形式的交互,在这种情况下,AcquireTokenSilent也可能会抛出MsalUiRequiredException。有关详情,请参见https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-handling-exceptions#msaluirequiredexception