You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Microsoft.Identity.Client AcquireTokenOnBehalfOf无法从缓存取令牌问题

AcquireTokenOnBehalfOf令牌缓存失效及优化解决方案

问题场景

在实现AcquireTokenOnBehalfOf的令牌缓存时发现:针对同一用户调用以下代码,每次都会返回不同的令牌,说明该方法默认没有内置的令牌缓存机制。

var app = ConfidentialClientApplicationBuilder.Create(ClientId)
    .WithClientSecret(ClientSecret)
    .WithAuthority(authority)
    .Build();

var result = await app.AcquireTokenOnBehalfOf(new[] { "https://graph.microsoft.com/.default" }, userAssertion)
                      .ExecuteAsync()
                      .ConfigureAwait(false);

尝试过的方案及问题

尝试引入Microsoft.Identity.Web中的app.AddInMemoryTokenCache()来实现缓存,虽然能成功复用令牌,但单次请求耗时达到了21秒,完全无法满足性能要求。

最终解决方案

在ConfidentialClientApplicationBuilder中添加以下两行配置后,令牌缓存正常生效,现在可以从缓存中直接获取令牌:

.WithLegacyCacheCompatibility(false)
.WithCacheOptions(CacheOptions.EnableSharedCacheOptions)

内容的提问来源于stack exchange,提问作者Iwoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:09:26