在我們的Xamarin.Android應用程序中,我們使用ADAL for .Net v3.13.5來獲取訪問令牌。當使用Azure Active Directory Library時,客戶端是否需要持久存儲令牌本身?
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持久化令牌,這樣即使應用程序重新啓動,或者應用程序本身需要照顧令牌持久性和刷新邏輯,令牌也可用?
在Android上,它們會自動通過Base64編碼字符串保存令牌,'SharedPreferences'所以假設你不卸載並重新安裝應用程序,訪問/刷新令牌將在兩者之間運行的應用程序緩存.. – SushiHangover
@SushiHangover不卸載/重新安裝。在應用程序運行之間(用戶離開應用程序,應用程序被android破壞,用戶再次打開應用程序)本身,用戶再次登錄屏幕。 – Eight
'authContext.TokenCache.ReadItems()。Count()'等於零嗎? 「Xamarin.Android」項目中的代碼是否在您的問題中?在PCL庫中?如果此代碼不在「Xamarin.Android」中,您是否將ADAL nuget添加到了主項目中? https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/blob/c5c66c097a6499e0c646f5ed1db1d6d278683104/src/ADAL.PCL/AuthenticationContext.cs#L134 – SushiHangover