使用 ROPC 流程从 Azure B2C 请求访问令牌时,为什么会收到 400 - 错误请求?

问题描述 投票:0回答:1

背景

我有一个 Azure B2C 租户,其应用程序注册名为

App Simulator
。我有一个
.net 8
C# 控制台应用程序,可以模拟我的应用程序上的活动。为了模拟用户,控制台应用程序使用专用用户流连接到 Azure B2C,该用户流使用资源所有者密码凭据 (ROPC) 来获取访问令牌。

我相信我遵循了Microsoft 文档中描述的步骤。

这是我用来获取访问令牌的 URL:

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

这是我的请求正文,内容类型为

application/x-www-form-urlencoded
:

username: "<my_user>@<my_tenant>.onmicrosoft.com"
password: "<password>"
scope: "openid <my_app_registration_id>"
client_id: "<my_app_registration_id>"
response_type: "token id_token"
grant_type: "password"

MFA 已对用户禁用。

问题

我无法获取令牌:我总是从 B2C 获取

400 Bad Request
状态代码,没有任何详细信息或日志(除了 MSAL 指示的
non_parsable_oauth_error
)。

这是应用程序注册的配置:

  • oauth2AllowImplicitFlow
    =
    true

以及授予的权限:

Granted Permissions

问题

在 Postman 中使用 ROPC 流程从 Azure B2C 请求访问令牌时,为什么会收到

400 - Bad Request

c# azure azure-ad-b2c azure-ad-msal
1个回答
0
投票

您的请求正文格式不正确。正文需要使用 URL 参数编码,就像提交表单一样。

使用以下正文再次尝试发帖:

username=<my_user>@<my_tenant>.onmicrosoft.com&password=<password>&scope=openid+<my_app_registration_id>&client_id=<my_app_registration_id>&response_type=token+id_token&grant_type=password

© www.soinside.com 2019 - 2024. All rights reserved.