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

启用MFA后Python获取Dynamics 365令牌遇AADSTS50076错误

无需客户端密钥获取Dynamics 365 Marketing访问令牌(适配MFA)

核心方案:用MSAL交互式认证替代已弃用的ADAL

ADAL库已被微软弃用,且用户名密码流无法支持MFA。你可以使用**MSAL(Microsoft Authentication Library)**的公共客户端交互式认证流程——该流程不需要客户端密钥,通过用户手动完成MFA验证(设备批准/验证码)即可获取令牌。

步骤1:安装MSAL库

pip install msal

步骤2:编写认证代码

import msal

# 配置参数
CLIENT_ID = "你的原client_id"  # 沿用你之前使用的客户端ID,需为公共客户端类型
AUTHORITY = "https://login.microsoftonline.com/common"
SCOPE = ["https://xxxx.xxx.dynamics.com/.default"]  # 替换为你的Dynamics实例URL

# 初始化公共客户端应用
app = msal.PublicClientApplication(CLIENT_ID, authority=AUTHORITY)

# 触发交互式登录(自动弹出浏览器完成MFA验证)
result = app.acquire_token_interactive(scopes=SCOPE)

# 获取访问令牌
if "access_token" in result:
    access_token = result["access_token"]
    print("令牌获取成功:", access_token)
else:
    print("认证失败:", result.get("error_description"))

关键说明

  • 公共客户端应用要求:你现有client_id对应的应用需配置为「公共客户端」类型;若之前是机密客户端,你可以自己在Azure AD注册一个新的公共客户端应用(普通用户权限即可完成注册)。
  • 交互式验证流程:运行代码后会自动弹出浏览器,引导你完成公司账户登录及MFA验证(设备批准/输入验证码),验证完成后令牌会自动返回给代码。
  • 令牌自动缓存:MSAL会自动缓存令牌,后续运行代码可直接调用缓存,无需重复验证(除非令牌过期或缓存失效)。

常见问题处理

  • 若浏览器提示「应用未授权」:确认你的client_id对应的应用已被允许访问Dynamics 365 Marketing,或联系IT团队将该应用添加到允许列表(无需客户端密钥,仅需确认应用权限)。
  • 若无法注册新应用:检查Azure AD的用户应用注册权限,默认普通用户可注册应用,若被限制需联系IT团队开通基础的应用注册权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:17:33