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

AAD B2C环境下SPA用户如何通过用户名密码换取Bearer Token?

解决方案指引

1. 使用AAD B2C的资源所有者密码凭证(ROPC)流

AAD B2C支持ROPC流,允许直接通过用户名和密码请求获取Bearer Token,无需用户交互,完全匹配你的场景。核心要点:

  • 仅适用于AAD B2C本地账户(即租户内直接创建的用户名密码账户,不支持社交登录账户)。
  • 无需为每个用户创建AppID/Secret,只需为你的应用注册一个公共客户端/SPA类型的应用即可(ROPC流针对公共客户端设计,不需要客户端密钥)。

2. 具体请求格式

向AAD B2C的token端点发送POST请求,替换占位符后即可调用:

POST https://<你的B2C租户名称>.b2clogin.com/<你的B2C租户名称>.onmicrosoft.com/<你的用户流名称>/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

grant_type=password
&client_id=<你的应用客户端ID>
&username=<用户邮箱/用户名>
&password=<用户密码>
&scope=openid offline_access <你的API作用域>
&response_type=token id_token
  • <你的B2C租户名称>:例如contoso(对应租户域名contoso.onmicrosoft.com)
  • <你的用户流名称>:你创建的登录/注册用户流名称,例如B2C_1_signin
  • <你的应用客户端ID>:SPA应用在AAD B2C中注册时生成的客户端ID
  • <你的API作用域>:API注册时定义的权限范围,例如https://contoso.onmicrosoft.com/api/access_as_user

3. 必要配置

  • 在AAD B2C应用注册中,将应用类型设置为公共客户端/SPA(无需配置客户端密钥)。
  • 在对应的用户流设置中,启用“资源所有者密码凭证”流支持(在用户流的属性或身份提供者选项中开启)。
  • 确保应用已被授权访问目标API的权限,且请求的scope包含该权限。

4. 安全提醒

  • 必须通过HTTPS发送请求,避免密码明文传输泄露。
  • 该流不支持多因素认证(MFA),若用户流启用了MFA,ROPC请求会直接失败。
  • 仅在信任的内部环境中使用,不要在公开的前端应用中直接嵌入密码输入逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 22:33:16