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

Microsoft OAuth2 /token端点始终返回错误码900144求助

解决Azure AD OAuth2获取Token时的AADSTS900144错误

问题描述

我正按照微软官方文档为应用添加OAuth2登录功能,已成功获取授权码,但请求/token端点时始终返回如下错误,提示请求体缺少grant_type参数。但官方文档要求将参数放在查询字符串中,我尝试过以下操作均无效:

  • 将参数放在请求体
  • 同时放在查询字符串和请求体
  • 添加Content-Type: application/x-www-form-urlencoded请求头
  • 为Azure应用添加带尾斜杠的重定向URI

无论发送什么请求(无参数、虚假参数等),都会返回该错误,怀疑是微软的错误解析逻辑问题,该如何解决?

错误响应

{
  "error": "invalid_request",
  "error_description": "AADSTS900144: The request body must contain the following parameter: 'grant_type'.\r\nTrace ID: ff270385-1331-498d-94a1-bcedad81d100\r\nCorrelation ID: d7d7cdd3-2994-4a41-b8b0-7aebca34e81b\r\nTimestamp: 2023-04-22 23:04:06Z",
  "error_codes": [
    900144
  ],
  "timestamp": "2023-04-22 23:04:06Z",
  "trace_id": "ff270385-1331-498d-94a1-bcedad81d100",
  "correlation_id": "d7d7cdd3-2994-4a41-b8b0-7aebca34e81b",
  "error_uri": "https://login.microsoftonline.com/error?code=900144"
}

解决方案

1. 强制使用POST请求并将参数放在请求体

Azure AD的/token端点仅支持POST请求,且必须将所有参数放在请求体中(而非查询字符串),即使文档可能有表述歧义。确保请求方法为POST,且参数以application/x-www-form-urlencoded格式编码,示例请求体如下:

grant_type=authorization_code&code=你的授权码&redirect_uri=你的重定向URI&client_id=你的客户端ID&client_secret=你的客户端密钥

2. 排查请求体编码格式

即使设置了Content-Type头,也要确认请求体不是JSON格式,必须是x-www-form-urlencoded的键值对形式。比如避免发送{"grant_type":"authorization_code"}这类JSON字符串。

3. 用工具直接测试排除代码问题

使用Postman或curl直接发送请求,排除应用代码或中间件的干扰:

curl -X POST "https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code&code=你的授权码&redirect_uri=你的重定向URI&client_id=你的客户端ID&client_secret=你的客户端密钥"

4. 检查应用注册配置

  • 确认redirect_uri与Azure应用注册中的配置完全一致,包括大小写、是否带尾斜杠
  • 在Azure门户的应用注册→认证→高级设置中,确保启用了授权码流

5. 处理特殊字符编码

如果授权码或重定向URI包含特殊字符,需进行URL编码,避免参数被截断或解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 22:05:13