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

使用MSAL PublicClientApplication通过用户名密码获令牌遇7000218错误的疑问

问题原因及解决办法

错误ID 7000218的核心原因和解决思路如下:

1. 应用注册类型不匹配

你注册的Azure AD应用可能被设置为机密客户端(如Web应用/API类型),而非公共客户端(移动/桌面应用)。公共客户端本身不需要客户端凭证,但机密客户端会强制要求请求中携带client_secret或client_assertion。

  • 解决:登录Azure门户,找到你的应用注册,在「概述」页确认应用类型为「公共客户端(移动和桌面)」;如果是机密客户端类型,要么切换应用类型,要么改用ConfidentialClientApplication并提供对应的客户端凭证(但用户名密码流更适合公共客户端场景)。

2. 代码存在语法错误

你的代码里有几处引号问题,会导致MSAL初始化异常,进而触发错误的凭证校验逻辑:

  • 所有中文引号(‘/’)要换成英文引号(')
  • client_id参数的引号错误:原代码里, client_id={client_id}'多了末尾的单引号,正确写法应为client_id='{client_id}'(如果是变量则去掉引号直接写变量名)
  • authority_url的末尾引号是中文的,需替换为英文引号

修正后的代码示例:

authority_url = 'https://login.microsoftonline.com/{Tenant}'
app = msal.PublicClientApplication(
    authority=authority_url,
    client_id='{client_id}',
    client_credential=None
)

result = app.acquire_token_by_username_password(
    '{mail_of_windows_user}',
    '{password_of_windows_user}',
    scopes=["User.Read"]
)

3. 额外注意事项

  • 用户名密码流仅支持Azure AD工作/学校账户,不支持个人Microsoft账户
  • 目标账户不能启用多因素认证(MFA),否则会直接认证失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:37:44