我将Microsoft Graph API集成到MVC 5 Web应用程序中,以及根据本文使用ADAL Open ID Connect:
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;
答案 0 :(得分:1)
您需要提供自己的实现来将缓存内容存储在所需的存储中(无论是数据库,文件等)。为此,您将使用TokenCache类的SetBeforeAccess,SetAfterAccess和SetBeforeWrite扩展方法设置委托。
中有一个实现将缓存内容写入/读取文件的示例(对于.NET WPF应用程序)