背景
我有一个 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
以及授予的权限:
问题
在 Postman 中使用 ROPC 流程从 Azure B2C 请求访问令牌时,为什么会收到
400 - Bad Request
?
您的请求正文格式不正确。正文需要使用 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