1

我根據本文整合微軟圖形API爲5 MVC的Web應用程序,以及使用ADAL開放ID連接:正確實施TokenCache

https://azure.microsoft.com/en-us/resources/samples/active-directory-dotnet-webapp-openidconnect-v2/

我想知道,如何我可以提供不依賴於會話狀態的TokenCache的實現嗎?我應該向AcquireTokenForClientAsync提供什麼參數?現在,我只是提供一個類的新實例來滿足方法的簽名。我寧願刷新令牌自動處理,正如我在別處讀過的。但是,如果您爲TokenCache參數提供null,則令牌緩存不會自動處理?以下是我如何獲取令牌並在每次調用它時提供新的TokenCache()的示例。

ConfidentialClientApplication daemonClient = new ConfidentialClientApplication(
    AuthConstants.ClientId, 
    String.Format("https://login.microsoftonline.com/{0}/v2.0", AuthConstants.TenantId), 
    AuthConstants.RedirectUri, 
    new ClientCredential(AuthConstants.ClientSecret), 
    null, 
    new TokenCache()); 

AuthenticationResult authResult = await daemonClient.AcquireTokenForClientAsync(new string[] { "https://graph.microsoft.com/.default" }); 

return authResult.AccessToken; 

回答

1

您需要提供自己的實現來將緩存的內容存儲在您想要的存儲(數據庫,文件等)中。爲此,您將使用TokenCache類的SetBeforeAccess,SetAfterAccessSetBeforeWrite擴展方法設置代表。

實現寫作的一個例子/讀取高速緩存的內容的文件都可以(對於.NET WPF應用程序的情況下)在https://github.com/Azure-Samples/active-directory-b2c-dotnet-desktop/blob/master/active-directory-b2c-wpf/TokenCacheHelper.cs

+0

謝謝你,當你提供這個實現令牌緩存的,不令牌的刷新自動發生?在框架嘗試刷新它之前,如何知道令牌有效多久? –