MSAL令牌在1小时后过期

V. *_* G. 4 authentication azure xamarin azure-ad-msal

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

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

Dan*_*ian 5

仅作一点说明,MSAL实际不发行令牌或确定令牌到期,而是从Azure AD STS摄取获取令牌。

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

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

存取凭证: 1小时

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

Azure AD确实允许您在PowerShell中配置这些令牌到期。您可以定义令牌生存期策略,然后将其分配给整个租户/组织或应用程序对象上的特定服务主体。要记住的另一件事是,如果您要为特定资源请求令牌,则必须在该资源上设置策略,而不是在请求服务主体或应用程序上设置策略。有关此的更多信息,请在Azure AD中签出配置令牌生存期