【问题标题】:Proper implementation of TokenCacheTokenCache 的正确实现
【发布时间】:2018-02-10 14:35:02
【问题描述】:

我正在将 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 ,则不会自动处理令牌缓存?这是我如何获取令牌并在每次调用它时提供 new 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;

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-5 azure-active-directory microsoft-graph-api


    【解决方案1】:

    您需要提供自己的实现来将缓存的内容存储在您想要的存储中(无论是数据库、文件等)。为此,您将使用 TokenCache 类的 SetBeforeAccessSetAfterAccessSetBeforeWrite 扩展方法设置委托。

    https://github.com/Azure-Samples/active-directory-b2c-dotnet-desktop/blob/master/active-directory-b2c-wpf/TokenCacheHelper.cs 中提供了将缓存内容写入/读取到文件的实现示例(对于 .NET WPF 应用程序的情况)

    【讨论】:

    • 谢谢,当你提供这个令牌缓存的实现时,令牌的刷新会自动发生吗?在框架尝试刷新令牌之前,您如何判断令牌的有效期?
    猜你喜欢
    • 1970-01-01
    • 2010-10-05
    • 2010-10-15
    • 2011-10-18
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多