当前位置: 首页 > news >正文

【Azure Entra ID】AcquireTokenForClient 触发 Entra ID 请求风暴?Shared Cache 才是 Web App 登录的正确方式

问题描述

Web App 调用 Azure Entra ID 中国区认证端点 login.chinacloudapi.cn 获取访问令牌时,产生了异常巨大的 Entra ID 请求量,最终导致请求失败和整体登录不稳定。

问题发生在使用 MSAL 的 AcquireTokenForClient 获取 Token 场景中,表面现象是“Web App 调用 Entra ID 失败”,实质原因则与令牌缓存未生效密切相关。

 

问题解答

Web App 使用的是 Client Credentials Flow(客户端凭据模式),核心实现依赖 MSAL 的 ConfidentialClientApplicationAcquireTokenForClient 方法。
 
优化后的关键代码如下(原文代码):
    var app = ConfidentialClientApplicationBuilder.Create(clientId).WithClientSecret(clientSecret).WithAuthority(new Uri(authority))
        .WithLegacyCacheCompatibility(false).WithCacheOptions(CacheOptions.EnableSharedCacheOptions).Build();

以及在获取访问令牌时:

await app.AcquireTokenForClient(scopes).ExecuteAsync();

围绕上述代码,AcquireTokenForClient 获取 Token 的完整流程可以拆解为以下几个关键点:

 一:ConfidentialClientApplication 是 Token 缓存的承载者

ConfidentialClientApplication 表示 Web App 自身在 Azure Entra ID中的“应用身份”,它不仅负责向 Entra ID发起认证请求,同时内部维护了 MSAL 的访问令牌缓存。如果该对象被频繁创建或生命周期过短,缓存将无法复用,直接导致每次获取 token 都访问 Entra ID。

 

二:WithCacheOptions(CacheOptions.EnableSharedCacheOptions) 的核心作用

.WithCacheOptions(CacheOptions.EnableSharedCacheOptions)

这行代码的意义在于:

  • 显式启用 Shared Token Cache
  • 允许同一应用实例在多个 token 请求之间共享并复用已获取的 access token
  • 在 token 有效期内,MSAL 会优先从缓存返回 token,而不是访问 Entra ID

缺少该配置,或未正确复用 app 对象时,即使使用了 MSAL,也相当于每次 AcquireTokenForClient 都是一次全新的登录请求。

 

三:AcquireTokenForClient 的真实执行逻辑

当调用以下代码时:

await app.AcquireTokenForClient(scopes).ExecuteAsync();

MSAL 实际执行顺序为:

1:在本地缓存中查找匹配 scopes 的 access token
2:如果 token 存在且未过期 → 直接返回(不调用 AAD (Entra ID))
3:如果不存在或已过期 → 才向 login.chinacloudapi.cn 发起一次新的 token 请求
4:将新 token 写入缓存,供后续请求复用

 

  • 应用级别(如 Startup / Singleton)创建一次 ConfidentialClientApplication
  • 启用 .WithCacheOptions(CacheOptions.EnableSharedCacheOptions)
  • 所有业务代码统一调用 AcquireTokenForClient 获取 token

 通过该方式,可以显著降低对 Azure Entra ID的请求压力,避免登录风暴,并提升 Web App 的稳定性。

 

参考资料 

MSAL Token Cache 说明 :https://learn.microsoft.com/en-us/entra/identity-platform/msal-acquire-cache-tokens#acquiring-tokens 

 

http://www.zskr.cn/news/159392.html

相关文章:

  • dLLM:复用自回归模型权重快速训练扩散语言模型
  • 基于Java实现的简易规则引擎(日常开发难点记录)
  • ClickHouse 监控与告警:确保大数据系统稳定运行
  • 合肥哪里可以开病例证明病假条
  • 零代码平台哪个好?这8款最推荐 - 企业数字化观察家
  • 构建智能代理的利器:深入解析 Microsoft Agent Framework
  • re入门3
  • 屹晶微 EG27710 600V耐压、高性能、快速开关的半桥驱动芯片技术解析
  • MBA必看!9个降AI率工具推荐,高效避坑指南
  • Go之路 - 8.go的接口
  • 数据采集与融合项目实践
  • 超详细!提示工程架构师的数据安全策略
  • 实用指南:鸿蒙原生系列之监听布局和送显事件
  • 高频注入法的永磁同步电机无传感器控制 高频电压信号注入法 无速度传感器 matlab 仿真 不含文档
  • 力扣1005 K次取反后最大化的数组和 java实现
  • 云服务器成本优化
  • [Mac] Now冥想音频提取工具,无需会员,安装即用
  • 通过TDE + DBG 实现数据库“存储加密 + 字段脱敏”双模防护方案
  • U盘文件“隐形”难题:不显示却占空间,数据恢复全攻略
  • 2025年12月气体检测仪高性价比榜单深度解析
  • B2B企业做品牌战略咨询选哪家公司靠谱?奇正沐古 - 资讯焦点
  • 华三交换机定时关闭端口和定时重启
  • AI作为金融安全底座——澳大利亚银行如何重塑风险管理模式
  • 看看灵光、秒哒、NoCode、Gemini、iThinkAir各家做应用的效果
  • B2B企业的数字订货中枢:商联达订货系统让每一笔订单都精准高效
  • UR开放直接扭矩控制:为协作机器人高级控制算法研究打开新路径
  • 2026主管技师备考蓝图:如何科学抉择备考辅导机构 - 资讯焦点
  • 云服务器安全加固指南:从基础配置到纵深防御体系搭建
  • padding不生效
  • 2025年石家庄有实力的艺术肌理漆直销厂家哪个好,环保艺术涂料/艺术涂料/耀晶石艺术漆,艺术肌理漆生产厂家排行 - 品牌推荐师