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

启用2FA的微软Azure账户如何无交互调用GenerateToken REST API

问题描述

我当前的流程是:

  • 步骤1:通过REST API后端服务登录启用2FA的微软账户,获取访问令牌,调用的API为:
    POST https://login.microsoftonline.com/common/oauth2/token
    
  • 步骤2:使用该访问令牌调用PowerBI账户API获取嵌入令牌

但当微软账户启用2FA时,调用上述API会报错,无法完成流程(禁用2FA时可正常运行),报错信息如下:

"error": "interaction_required",
"error_description": "AADSTS50076: Due to a configuration change made by your administrator, or because you moved to a new location, you must use multi-factor authentication to access '00000009-0000-0000-c000-000000000000'. Trace ID: 05451564-7c99-454f-9f1c-85b5d0ac6a00 Correlation ID: 026670ad-9c04-46d8-828b-0c1435938e90 Timestamp: 2023-11-05 14:11:35Z",
"error_codes": [
    50076
]

要求流程必须完全通过REST API实现,不能提示用户输入验证码,请问如何在启用2FA的情况下完成这个流程?

解决方案

你当前使用的用户名密码流(Resource Owner Password Credentials flow)无法支持无交互的MFA验证,Azure AD会直接拦截这类请求。推荐以下两种可行方案:

1. 服务主体(Service Principal)认证(推荐)

这是后端服务无交互访问PowerBI的最佳实践:

  • 在Azure AD中注册一个应用程序(即服务主体),根据业务需求给它分配PowerBI相关权限(比如Report.Read.All、Workspace.Read.All等)
  • 使用服务主体的客户端ID、客户端密钥(或证书)调用令牌接口获取访问令牌,请求地址:
    POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
    
    请求参数:
    grant_type=client_credentials
    client_id={你的服务主体ID}
    client_secret={你的服务主体密钥}
    scope=https://analysis.windows.net/powerbi/api/.default
    
  • 拿到令牌后直接调用PowerBI API获取嵌入令牌,该方式无需依赖用户账户的2FA状态,完全基于服务主体的权限访问。

2. 设备码流(Device Code Flow)(需用户一次性授权)

如果必须使用特定用户账户访问,可通过设备码流完成一次MFA授权后,后续无交互获取令牌:

  • 调用设备码接口获取授权信息:
    POST https://login.microsoftonline.com/common/oauth2/v2.0/devicecode
    
    请求参数:
    client_id={你的应用ID}
    scope=https://analysis.windows.net/powerbi/api/Report.Read.All offline_access
    
  • 拿到device_code、user_code和verification_uri后,让用户在浏览器打开verification_uri输入user_code并完成MFA验证(仅需一次)
  • 后端轮询令牌接口获取刷新令牌和访问令牌:
    POST https://login.microsoftonline.com/common/oauth2/v2.0/token
    
    请求参数:
    grant_type=device_code
    client_id={你的应用ID}
    device_code={拿到的device_code}
    
  • 后续可使用刷新令牌无交互获取新的访问令牌,无需再次验证MFA。

注意事项

  • 资源所有者密码流已被微软标记为不推荐用于生产环境,且在启用MFA的场景下会被强制拦截,建议尽快替换为上述方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 23:50:29