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

Excel调用受Microsoft Entra ID保护的API(含MFA)的解决方案咨询

从Excel调用带MFA的Entra ID保护API解决方案

核心问题

直接在Excel原生环境(如VBA、工作表函数)中调用Entra ID获取访问令牌会因MFA要求失败——这类环境无法弹出Microsoft认证页面,也无法接收OAuth2授权码流程的回调令牌,而测试工具(如Swagger)能完成MFA正是因为支持完整的跳转与回调环节。

可行解决方案

1. Excel外接程序(Office Add-ins):官方推荐方案

这是最稳定且符合规范的实现方式:

  • 外接程序基于Web技术(HTML/JS),可通过Office.js结合MSAL.js调用Office.context.auth.getAccessTokenAsync方法,自动触发MFA认证页面跳转,Office平台会处理回调并返回已完成MFA的访问令牌
  • 无需手动监听端口:Office框架已内置回调处理逻辑,只需在Entra ID应用注册中配置对应外接程序的重定向URI(格式通常为https://localhost:{端口}/auth/callback或部署后的公网地址)
  • 限制:
    • 仅支持Excel 2016及以上版本
    • 外接程序需完成Entra ID应用注册,并配置正确的API权限(需授予目标API的访问权限)
    • 若需内部部署,需通过Office部署工具或Microsoft 365管理中心发布

2. Power Query:轻量化数据查询场景

如果仅需从API拉取数据到Excel工作表,Power Query是更简单的选择:

  • 新建Power Query数据源时选择「从Web」,认证方式选择「组织账户」,系统会自动弹出MFA认证页面
  • 完成认证后,Power Query会自动管理令牌的获取与刷新,无需手动处理认证流程
  • 限制:
    • 仅适用于数据查询场景,无法直接获取令牌字符串用于自定义HTTP请求
    • 灵活性较低,无法实现复杂的API调用逻辑

3. VBA配合MSAL COM组件:进阶自定义场景

若必须在VBA中实现,可通过MSAL的COM包装库完成:

  • 引入MSAL的COM组件,在VBA中调用授权码流程方法,触发MFA认证窗口
  • 需在Entra ID应用注册中配置重定向URI为http://localhost:{自定义端口},并在VBA中通过Windows API或第三方轻量HTTP库实现本地端口监听,接收回调的授权码并交换为访问令牌
  • 限制:
    • 实现复杂度高,需处理HTTP监听、令牌解析、错误捕获等细节
    • 受VBA安全策略限制,可能需要降低宏安全级别,存在一定安全风险

通用配置要求

无论采用哪种方案,都需要在Entra ID中完成以下配置:

  • 注册对应类型的应用程序(外接程序选「Office Add-ins」,Power Query无需手动注册,VBA选「公共客户端应用」)
  • 为应用授予目标API的访问权限(需选择「委托权限」,因为是用户身份调用API)
  • 配置正确的重定向URI,匹配所选方案的认证流程

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:22:24