使用Azure Active Directory库时,客户端是否需要持久化并刷新令牌?

时间:2016-10-04 15:26:14

标签: android xamarin active-directory xamarin.android adal

在我们的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持久化令牌,这样即使app重新启动,令牌仍然可用,或者应用程序本身需要处理令牌持久性和刷新逻辑?

1 个答案:

答案 0 :(得分:2)

我相信有一个错误序列化会导致您遇到的问题。这意味着在构造AuthorizationContext时,您必须自己拥有TokenCache。

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