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

使用Azure B2C ROPC流请求访问令牌时为何返回400错误?

Azure B2C ROPC流请求令牌返回400 Bad Request的原因及修复方案

以下是导致你遇到400错误的核心问题及对应解决方法:

1. 错误引入response_type参数

ROPC流属于OAuth2直接授权模式,不需要response_type参数。你当前请求中添加的response_type: "token id_token"是隐式流的专属参数,会导致B2C无法正确解析请求结构,直接返回400错误,必须移除该参数。

2. Scope参数格式无效

直接使用应用注册ID作为scope的一部分是错误的。正确的scope配置需遵循:

  • 若仅需获取ID令牌,保留openid即可
  • 若需获取访问令牌,需使用应用的合法API范围:
    • 应用级权限用api://<你的应用注册ID>/.default
    • 自定义用户权限用你在应用注册中定义的具体范围(如api://<你的应用注册ID>/user.read)

3. 请求体格式不符合规范

你的请求体采用key: "value"格式,不符合application/x-www-form-urlencoded要求。正确格式应为:

  • 无需引号包裹值
  • 用=分隔键和值
  • 多个参数用&连接

修正后的完整请求示例

请求URL

POST https://<my_tenant>.b2clogin.com/<my_tenant>.onmicrosoft.com/B2C_1_<my_ropc>/oauth2/v2.0/token

请求头

Content-Type: application/x-www-form-urlencoded

请求体

username=<my_user>@<my_tenant>.onmicrosoft.com&password=<password>&scope=openid api://<my_app_registration_id>/.default&client_id=<my_app_registration_id>&grant_type=password

额外检查项

  • 确认ROPC用户流已启用:在Azure B2C租户中,检查B2C_1_<my_ropc>用户流是否处于启用状态,且已添加目标应用注册
  • 验证用户状态:确保用户账号未被锁定、密码正确,租户内无其他登录限制配置
  • 应用权限确认:确保已为应用注册授予所需API权限且已完成管理员同意

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 21:00:19