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

关于acquireTokenByClientCredential令牌缓存的技术咨询

问题1:缓存令牌的TTL

客户端凭据流通过acquireTokenByClientCredential获取的访问令牌,默认TTL为3600秒(1小时)。这个值由Azure AD的STS服务返回,并非MSAL SDK固定设定,少数情况下STS可能返回不同的有效期,但绝大多数场景下都是1小时。你可以通过令牌响应中的expires_in字段查看具体的有效时长。

问题2:缓存工作机制的详细说明

MSAL SDK针对客户端凭据流实现的是应用级令牌缓存(注意:客户端凭据流是应用自身身份认证,无用户上下文,你提到的“同一用户”可能是表述偏差,实际是同一应用身份、租户、作用域的请求会复用缓存),核心工作机制如下:

  • 缓存键规则:缓存条目以「客户端ID + 租户ID + 作用域集合」作为唯一标识,确保不同应用、租户或权限范围的令牌不会互相干扰。
  • 请求前的缓存校验:每次调用acquireTokenByClientCredential时,SDK会先检查缓存:
    1. 查找对应标识的令牌条目
    2. 判断令牌是否未过期(未达到expires_on时间)
    3. 同时会触发一个默认5分钟的「提前刷新窗口」:如果令牌距离过期不足5分钟,SDK会自动向STS请求新令牌,而非返回即将过期的缓存令牌
  • 缓存更新逻辑:
    • 若缓存中有有效令牌,直接返回,无需调用STS
    • 若缓存无匹配条目、令牌已过期或处于提前刷新窗口内,SDK会向STS发起请求获取新令牌,获取成功后更新缓存,再返回新令牌
  • 存储方式:不同平台的MSAL实现缓存存储位置不同:
    • 桌面/移动应用:通常存储在本地文件系统或安全存储(如Keychain、Keystore)
    • Web应用:默认使用内存缓存,也可配置分布式缓存(如Redis)实现多实例共享缓存

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 14:24:55