使用Postman调用OAuth 2.0授权码流时grant_type参数异常如何解决?
解决Postman调用Azure AD OAuth2授权码流时的AADSTS900144错误
核心问题定位
该错误的本质是Azure AD的token端点未正确接收到grant_type参数,通常是Postman请求体格式或参数配置不符合端点要求导致的——和你能正常工作的OkHttp配置对比,核心差异在于参数的传递方式。
具体修复步骤
- 确认请求基础配置:确保请求使用
POST方法,目标URL为Azure AD的v2.0 token端点(格式示例:https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token)。 - 切换正确的请求体类型:在Postman的「Body」标签下,选择
x-www-form-urlencoded格式,这是OAuth2 token端点要求的标准表单格式,和你OkHttp中的配置一致。 - 完整填写必填参数:在表单中逐一添加以下参数,确保参数名和值完全准确:
grant_type:固定填写authorization_codecode:之前获取到的有效授权码(注意授权码有效期仅5分钟,过期需重新获取)client_id:你的Azure AD应用程序IDclient_secret(仅机密客户端需要):应用程序对应的客户端密钥redirect_uri:必须与Azure AD应用中配置的重定向URI完全一致scope:和授权请求时使用的scope保持一致(例如openid offline_access)
- 检查请求头配置:切换到「Headers」标签,确认Postman自动添加了
Content-Type: application/x-www-form-urlencoded请求头,不要手动修改或删除该头。 - 禁用其他请求体格式:不要使用
raw、form-data等格式,这些格式无法被Azure AD的token端点正确解析,会导致grant_type参数丢失。
额外排查点
如果是公共客户端(如单页应用),无需传递client_secret,但要确保Azure AD应用的类型配置为对应的公共客户端类型。
内容的提问来源于stack exchange,提问作者Hentai
相关产品推荐
相关产品推荐

