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

C# MSAL令牌缓存异常:始终获取新令牌(无缓存访问令牌)

.NET桌面应用MSAL AcquireTokenSilent每次都获取新令牌问题

我用C#开发了一个.NET桌面应用,正在测试基于PublicClientApplicationBuilder和StorageCreationPropertiesBuilder(Windows平台)实现Azure AD登录的MSAL令牌缓存功能。

已严格遵循微软MSAL官方文档配置,目前能成功获取访问令牌,且令牌已存储到本地缓存中,但每次调用app.AcquireTokenSilent时都会触发获取新的访问令牌——虽然不需要每次交互式重新登录(MSAL会使用刷新令牌),但始终会生成并缓存新令牌,而非复用现有有效令牌。

查看MSAL日志(通过LogMetrics对象)发现以下关键条目:

MSAL 4.46.0.0 MSAL.Desktop 4.8 or later Windows 10 Enterprise [] [Clear] Clearing access token cache data.

最终还会出现:

[LogMetricsFromAuthResult] Cache Refresh Reason: NoCachedAccessToken

虽然日志提示"NoCachedAccessToken",但我检查本地令牌缓存时,确认访问令牌、ID令牌和刷新令牌都已正确保存,且每次获取新令牌后缓存会相应更新。

按MSAL的设计逻辑,AcquireTokenSilent应该返回缓存中有效的活跃访问令牌,仅在令牌已过期或即将过期时才静默获取新令牌。有没有人遇到过类似的问题?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 03:48:36