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

使用Microsoft Entra设备授权流时认证后遇AADSTS7000218错误

问题排查与解决方案

核心原因:应用注册的客户端类型不匹配

设备授权码流对公共客户端(如桌面/移动应用)不需要客户端密钥(client_secret),但如果你的应用被注册为机密客户端(如Web应用、API),微软身份平台会强制要求在令牌请求中携带客户端凭证(client_secret或client_assertion),这就是触发AADSTS7000218错误的根本原因。

具体修复步骤

  • 确认并调整应用注册类型

    1. 登录Entra管理中心,找到目标应用注册
    2. 进入「概述」页面,查看「应用类型」字段
    3. 若显示为「Web」或「API」,需切换为公共客户端模式:
      • 进入「身份验证」页面,添加「移动和桌面应用」平台,设置重定向URI为https://login.microsoftonline.com/common/oauth2/nativeclient
      • 保存配置后,令牌请求不再需要携带client_secret
  • 若必须使用机密客户端
    若业务需求限定使用机密客户端,需正确携带凭证:

    1. 在轮询的令牌请求体中,同时传入client_id、client_secret,请求格式示例:
      POST /token HTTP/1.1
      Host: login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
      Content-Type: application/x-www-form-urlencoded
      
      grant_type=urn:ietf:params:oauth:grant-type:device_code
      &client_id=你的客户端ID
      &client_secret=你的客户端密钥
      &device_code=获取到的设备码
      
    2. 检查client_secret有效性:确保是从Entra应用注册的「证书和密码」中生成的未过期密钥,无输入错误
  • 额外注意事项

    • 公共客户端禁止使用client_secret:桌面/移动类公共客户端无法安全存储密钥,这也是微软文档未提及该参数的原因
    • 严格遵循轮询格式:确保每次请求的device_code正确,grant_type固定为urn:ietf:params:oauth:grant-type:device_code

内容的提问来源于stack exchange,提问作者Dannovan Paul Devis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:39:59