MSAL 何时可以刷新令牌?
When can MSAL refresh a token?
根据 this site,"AcquireTokenSilent is capable ... of refreshing a token when it's getting close to expiration (as the token cache also contains a refresh token)" 这很好,但是允许 MSAL 刷新令牌的时间有哪些限制?
This Whosebug question 意味着有时服务器会发送一个特殊的刷新令牌,但是当我调用 App.PCA.AcquireToken...() 它时 returns 类型为 AuthenticationResult 的对象不会是否有任何成员命名为 Refresh(在我们的 Xamarin/C# 应用程序中),所以似乎实际上没有单独的令牌仅用于计算刷新?
AcquireTokenSilent() 需要上网吗?它总是与服务器签到吗?
AcquireTokenSilent 将在当前帐户的令牌缓存中搜索访问令牌。如果未找到,它将抛出 MsalUiRequiredException:
- 如果找到这样的访问令牌并且它还没有过期,它将 return 这个访问令牌(AuthenticationResult 的一部分)。这不需要互联网访问
- 如果找到这样的访问令牌但它已过期或接近过期,AcquireTokenSilent 将使用与令牌缓存中的帐户关联的刷新令牌(而不是通过 API 浮出水面),并获得一个新的访问令牌和刷新令牌,将它们存储在缓存中,return 访问令牌。此场景确实需要 Internet 连接
在某些微妙的情况下,在刷新令牌时,Microsoft 标识平台将决定需要 MFA 或某种交互,在这种情况下,AcquireTokenSilent 也可能引发 MsalUiRequiredException。详情见https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-handling-exceptions#msaluirequiredexception
根据 this site,"AcquireTokenSilent is capable ... of refreshing a token when it's getting close to expiration (as the token cache also contains a refresh token)" 这很好,但是允许 MSAL 刷新令牌的时间有哪些限制?
This Whosebug question 意味着有时服务器会发送一个特殊的刷新令牌,但是当我调用 App.PCA.AcquireToken...() 它时 returns 类型为 AuthenticationResult 的对象不会是否有任何成员命名为 Refresh(在我们的 Xamarin/C# 应用程序中),所以似乎实际上没有单独的令牌仅用于计算刷新?
AcquireTokenSilent() 需要上网吗?它总是与服务器签到吗?
AcquireTokenSilent 将在当前帐户的令牌缓存中搜索访问令牌。如果未找到,它将抛出 MsalUiRequiredException:
- 如果找到这样的访问令牌并且它还没有过期,它将 return 这个访问令牌(AuthenticationResult 的一部分)。这不需要互联网访问
- 如果找到这样的访问令牌但它已过期或接近过期,AcquireTokenSilent 将使用与令牌缓存中的帐户关联的刷新令牌(而不是通过 API 浮出水面),并获得一个新的访问令牌和刷新令牌,将它们存储在缓存中,return 访问令牌。此场景确实需要 Internet 连接
在某些微妙的情况下,在刷新令牌时,Microsoft 标识平台将决定需要 MFA 或某种交互,在这种情况下,AcquireTokenSilent 也可能引发 MsalUiRequiredException。详情见https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-handling-exceptions#msaluirequiredexception