MSAL令牌在1小时后到期

时间:2017-06-13 10:20:26

标签: azure authentication xamarin msal

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

我无法理解,即使令牌有效期为1天,刷新令牌的有效性更高,为什么每1小时后要求进行身份验证? 可以使用任何参数值或任何其他方式更改吗?

2 个答案:

答案 0 :(得分:4)

为了做一个小小的澄清,MSAL实际上并没有发出令牌或决定令牌过期,而是从Azure AD STS中获取获取令牌。

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

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

访问令牌: 1小时

刷新代币: 90天,14天无效滑动窗口

Azure AD允许您在PowerShell中配置这些令牌过期。您可以定义令牌生存期策略,然后将其分配给特定服务主体,租户/组织或应用程序对象。另外要记住的是,如果您要为特定资源请求令牌,则必须在该资源上设置策略,而不是请求服务主体或应用程序。有关详细信息,请结帐configuring token lifetime in Azure AD

答案 1 :(得分:0)

感谢您的回复。我得到了解决方案。似乎TokenCache存在问题,因为哪个令牌没有正确存储,我得到了一个例外。这已在新版本的Xamarin Android中得到解决。错误定义here