AcquireTokenForClient (MSAL) 是不是使用令牌缓存?

Posted

技术标签:

【中文标题】AcquireTokenForClient (MSAL) 是不是使用令牌缓存?【英文标题】:Does AcquireTokenForClient (MSAL) use the token cache?AcquireTokenForClient (MSAL) 是否使用令牌缓存? 【发布时间】:2021-04-29 09:27:24 【问题描述】:

我正在(成功地)使用带有 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的调用是否首先尝试在令牌缓存中查找令牌,并且仅当缓存中不存在令牌或令牌已过期时才在线获取它?还是它总是在线获取令牌?如果后者为真,我需要进行哪些更改才能获得所需的行为?

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于AcquireTokenForClient (MSAL) 是不是使用令牌缓存?的主要内容,如果未能解决你的问题,请参考以下文章

没有 MS MS 图形的 MS Teams API

Kafka10.1 heartbeat.interval.ms、session.timeout.ms和max.poll.interval.ms

调度的log 1.5ms 12ms 4ms

如何在 PHP 中将“MM:SS.MS”转换为“SS.MS”?

如何使用360 安装 ms17-010

解密/读取/修改“.automaticDestinations-ms”和/或“.customDestinations-ms”