Azure登录报错AADSTS900144提示缺client_id但URL已携带参数问题咨询
报错触发原因
- 核心问题是
redirect_uri配置错误:你将回调地址设为了Azure AD本身的/oauth2/v2.0/authorize端点,导致首次授权请求触发后,系统会自动重定向到该端点,重定向过程会丢失原始请求的查询参数,甚至会被校验逻辑判定为非法POST请求,因此抛出「请求体缺少client_id」的误报。 - 隐式流(
response_type=id_token)的参数配置不符合规范:如果<CLIENTID>替换后存在多余空格、特殊字符未转义,或者与Azure AD应用注册的客户端ID不一致,会导致参数解析失败,系统无法识别到查询参数里的client_id,就会要求从请求体传递该参数。 - Azure AD应用注册的配置不匹配:如果应用没有开启隐式流权限,或者
redirect_uri没有提前添加到应用注册的重定向URI白名单中,也会触发参数校验异常。
解决方法
- 修正
redirect_uri取值:将该参数替换为你自己的业务应用回调地址,必须和Azure AD应用注册「身份验证」页下的「重定向URI」列表中的配置完全一致,不可使用Azure AD的授权端点作为回调地址。修正后的请求URL示例:https://login.microsoftonline.com/<TENENT>/oauth2/v2.0/authorize?response_type=id_token&state=<SOMESTATE>&client_id=<CLIENTID>&scope=<SCOPE>&redirect_uri=<你的应用实际回调地址> - 校验参数取值:替换所有<>包裹的占位符后,确认
client_id为Azure AD应用注册生成的「应用程序(客户端)ID」,无多余空格、特殊字符,无需保留<>符号。 - 开启隐式流权限:进入Azure AD应用注册的「身份验证」页,在「隐式授权和混合流」模块下勾选「ID令牌(用于隐式流和混合流)」选项并保存。
- 排查scope配置问题:如果修改后仍报错,可先将scope参数替换为
openid profile email默认权限,排除自定义scope配置错误的影响。
内容的提问来源于stack exchange,提问作者user8072194
相关产品推荐
相关产品推荐

