6

我在 Xamarin 应用程序中使用 MSAL 进行 Azure AD 身份验证。令牌的有效期为 1 天(使用 AuthenticationResult 的ExpiresOn值查看)。我的问题是,1 小时后,AcquireTokenSilentAsync 失败,然后需要调用 AcquireToken。

我无法理解,即使令牌有效期为 1 天,并且刷新令牌的有效期更长,为什么每隔 1 小时要求验证一次?这可以使用任何参数值或任何其他方式进行更改吗?

4

2 回答 2

13

澄清一下,MSAL 实际上并不颁发令牌或决定令牌过期,而是从 Azure AD STS 提取获取令牌。

调用 AcquireTokenSilentAsync 时,MSAL 将在过期后自动刷新您的访问令牌。由于某种令牌缓存未命中,您可能无法获得自动静默刷新。如果没有看到您的代码,很难说出具体问题,但我建议将其与官方 MSAL Xamarin 代码示例进行比较。

如果你正在构建一个 Xamarin 应用程序,那么它就是一个公共客户端。现在的默认令牌到期时间是:

访问令牌: 1 小时

刷新令牌: 90 天,14 天非活动滑动窗口

Azure AD 允许您在 PowerShell 中配置这些令牌过期时间。您可以定义令牌生命周期策略,然后将其分配给特定的服务主体、跨租户/组织或应用程序对象。要记住的另一件事是,如果您要为特定资源请求令牌,则必须在该资源而不是请求服务主体或应用程序上设置策略。有关这方面的更多信息,请查看在 Azure AD 中配置令牌生命周期

于 2017-06-13T16:57:23.063 回答
1

TokenCache 存在问题,因为没有正确存储令牌,我遇到了异常。这已在较新版本的 Xamarin Android 中得到解决。此处定义的错误

于 2017-06-18T06:52:23.907 回答