c# - AcquireTokenForClient (MSAL) 是否使用 token 缓存?

标签 c# azure-ad-msal

我(成功)使用客户端凭据流与 MSAL 来对应用进行身份验证,如下所示:

private static async Task<AuthenticationResult> getAuthResultNonInteractively()
{
    string[] scopes = {"api://xxx/.default"};

    IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.CreateWithApplicationOptions(
            new ConfidentialClientApplicationOptions
            {
                TenantId = "xxx",
                ClientId = "xxx",
                RedirectUri = "http://localhost",
                ClientSecret = "xxx"
            })
        .Build();
    
    // Desired behaviour: acquires token online only if token does not 
    // exist in cache or is expired
    AuthenticationResult authResult = await app.AcquireTokenForClient(scopes)
        .ExecuteAsync();

    return authResult;
}

AcquireTokenForClient 的调用是否首先尝试在 token 缓存中查找 token ,并且仅当 token 在缓存中尚不存在或 token 已过期时才在线获取它?或者它总是在线获取 token ?如果后者是正确的,我需要改变什么才能获得所需的行为?

最佳答案

AcquireTokenForClient 使用的 AppTokenCache 与您的 IConfidentialClientApplication 的特定实例相关联,因此为了利用 token 缓存,您的 IConfidentialClientApplication 需要长期存在(即单例)。

关于c# - AcquireTokenForClient (MSAL) 是否使用 token 缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65887066/

相关文章:

c# - 简单的 ftp 下载器/http 代理

c# - 如何使用 HTML Agility Pack 将输入标签添加到表单?

c# - 无法获取 Controller 的输入参数,Ajax.ActionLink

azure - 使用 ConfidentialClientApplication 保护对 MS Graph 的 Multi-Tenancy 访问

jquery - Azure AD 身份验证 401 错误 "the audience is invalid"AddAzureADBearer .Net Core Web Api

javascript - Azure AD - OAuth 2 - 隐式授予 - 尝试使用应用程序进行身份验证时出现 CORS 错误,但当我从浏览器访问 URL 时工作正常

c# - 能否从某种方法名称集合创建 C# 4.0 中的多播委托(delegate)?

c# - 使用 Jira C# SDK 创建 Epic 类型的问题

.net - Azure AD MSAL 中的范围、角色和组之间的区别

azure - "authentication failed due to: jwt audience is invalid"与 Azure AD