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

