客户端在使用 Azure Active Directory 库时是否需要自己持久化和刷新令牌?

Does client need to persist and refresh token itself when using Azure Active Directory Library?

在我们的 Xamarin.Android 应用中,我们使用 ADAL for .Net v3.13.5 来获取访问令牌。

var authContext = new AuthenticationContext(AD_AUTHORITY);

if (authContext.TokenCache.ReadItems().Count() > 0)
{
    authContext = new AuthenticationContext(authContext.TokenCache.ReadItems().First().Authority);
}

var authResult = await authContext.AcquireTokenAsync(API_RESOURCE_ID_URI, CLIENT_ID, new Uri(REDIRECT_URI), new PlatformParameters(callerActivity));
return authResult.AccessToken;

似乎令牌仅由 ADAL 存储在内存中。每次应用重新启动时,用户都必须重新登录。

有没有办法让 ADAL 持久化令牌,以便即使应用程序重新启动令牌也可用,或者应用程序本身需要处理令牌持久性和刷新逻辑?

我相信有一个错误序列化导致了您所看到的问题。这意味着您在构造 AuthorizationContext 时必须自己取得 TokenCache 的所有权。

https://forums.xamarin.com/discussion/58736/crash-in-release-build-when-using-datacontractjsonserializer