如何通过Azure B2C传递用户名密码获取令牌及解决Postman调用错误
解决Azure B2C获取令牌报错AADB2C90057的问题
确认授权流程匹配需求
你需要用**资源所有者密码凭据流(ROPC)**实现用户名密码直接获取令牌,而非隐式流。先核对Postman请求配置:
- 请求URL必须是B2C租户的ROPC端点,格式示例:
https://<租户名>.b2clogin.com/<租户名>.onmicrosoft.com/<用户流名称>/oauth2/v2.0/token - 请求方法为
POST,必填参数:grant_type=passwordclient_id=<你的应用ID>username=<完整用户名,如user@xxx.onmicrosoft.com>password=<用户密码>scope=<目标Web API的权限范围,如https://xxx.onmicrosoft.com/api/access>
配置Azure B2C应用的授权规则
- 登录Azure门户,进入你的B2C租户后台
- 找到目标应用注册,进入身份验证选项卡
- 在隐式授权和混合流区域,勾选ID令牌和访问令牌(若需兼容隐式流,但核心是确保ROPC流被允许)
- 切换到高级设置,确认允许的令牌颁发者配置正确
- 保存所有更改
启用用户流的ROPC支持
- 在B2C租户后台进入用户流页面,选择你正在使用的用户流(如SignInSignUp)
- 打开属性选项,确认允许资源所有者密码凭据流已勾选启用
校验Postman参数准确性
client_id必须是应用注册的应用程序(客户端)ID,而非对象IDscope必须包含目标Web API已授权给该客户端的权限范围- 用户名需使用完整的用户主体名(UPN)格式
错误"AADB2C90057"的核心原因:当前请求触发了隐式流,但应用未配置允许该流。若你的目标是ROPC流,务必确保请求端点、参数与ROPC流程匹配,同时完成应用和用户流的对应配置。
内容的提问来源于stack exchange,提问作者JCI
相关产品推荐
相关产品推荐

