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
相关产品推荐
相关产品推荐

