如何用HTTP REST实现Azure AD B2C应用邮箱密码登录并获取JWT?
Azure AD B2C 无浏览器登录(Postman测试)实现指南
1. 应用注册正确配置步骤
- 登录Azure门户,进入你的AD B2C租户
- 进入应用注册 > 新注册:
- 填写应用名称(如「Postman API测试客户端」)
- 支持的账户类型按需选择(内部测试选「仅限此组织目录中的账户」即可)
- 重定向URI选「Web」,填入占位地址(如
https://jwt.ms,AD B2C要求必须配置)
- 进入该应用的认证页面:
- 在「高级设置」中开启允许公共客户端流(Postman属于无密钥的公共客户端)
- 进入API权限页面:
- 添加目标API的委托权限(若为自定义API,需先注册该API并暴露权限范围)
- 点击「授予管理员同意」(针对租户内账户,避免用户手动授权)
2. 必须配置用户流(ROPC专用)
AD B2C所有认证流程都依赖用户流或自定义策略,无浏览器测试需用资源所有者密码凭据(ROPC)流对应的用户流:
- 进入AD B2C租户的用户流 > 新建用户流:
- 选择「登录」或「注册和登录」类型(按需选择是否支持新用户注册)
- 命名规则必须以
B2C_1_开头(如B2C_1_ROPC_signin) - 身份提供者勾选「本地账户」(ROPC不支持社交登录)
- 在「应用程序声明」中选择需包含在JWT中的字段(如
email、sub、name等)
- 保存用户流即可,无需额外启动测试(后续用Postman验证)
3. Postman请求配置细节
请求端点
格式为:
https://<你的B2C租户名>.b2clogin.com/<你的B2C租户名>.onmicrosoft.com/<用户流名称>/oauth2/v2.0/token
示例:若租户名为contoso,用户流为B2C_1_ROPC_signin,则端点为:
https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1_ROPC_signin/oauth2/v2.0/token
请求参数
- 请求方法:
POST - 请求头:
Content-Type: application/x-www-form-urlencoded - 请求体(x-www-form-urlencoded格式):
grant_type:password(固定,指定ROPC授权类型)client_id: 应用注册页面获取的客户端IDusername: 测试用户的完整邮箱/用户名(如testuser@contoso.onmicrosoft.com)password: 测试用户的登录密码scope: 目标API的权限范围 + 可选的offline_access(如https://contoso.onmicrosoft.com/api/access_as_user offline_access,后者用于获取刷新令牌)redirect_uri: 填写应用注册时配置的占位地址(如https://jwt.ms)
注意事项
- ROPC流直接传递用户密码,仅适合内部测试场景,生产环境禁止使用
- 测试用户不能开启MFA,否则请求会直接失败
- 若使用自定义策略,只需将端点中的用户流名称替换为自定义策略名称(如
B2C_1A_ropc_custom)
内容的提问来源于stack exchange,提问作者Edwin Vesga
相关产品推荐
相关产品推荐

