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

Azure AD B2C中OAuth 2.0授权码流手动获取access token:Postman使用困惑

解决Azure B2C授权码换Token时Postman无法获取响应的问题

你混淆了OAuth2.0授权码流程中两个步骤里redirect_uri的作用:

  1. 获取授权码的步骤:这是浏览器端的跳转流程,授权服务器会把授权码通过redirect_uri的地址返回(比如https://jwt.ms会在页面上显示授权码),这一步redirect_uri是用来接收授权码的实际地址。

  2. 用授权码换Access Token的步骤:这一步是客户端(你的Postman)直接向Azure B2C的Token端点发送POST请求,这个请求的响应会直接返回给Postman,而不是发送到redirect_uri。这里的redirect_uri只是一个验证参数——必须和你第一步获取授权码时使用的redirect_uri完全一致,Azure B2C才会处理你的Token交换请求。

正确的Postman操作步骤:

  • 请求方法:POST
  • 请求URL:替换为你的Azure B2C租户的Token端点,格式类似:
    https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{your-policy-name}/oauth2/v2.0/token
    
  • 请求体格式选择x-www-form-urlencoded,添加以下参数:
    • grant_type: authorization_code
    • client_id: 你的Azure B2C应用注册ID
    • scope: 和第一步获取授权码时完全一致的权限范围(比如openid offline_access https://{your-tenant}.onmicrosoft.com/api/read)
    • code: 第一步获取到的授权码(注意:授权码只能使用一次,失效后需要重新获取)
    • redirect_uri: https://jwt.ms(必须和第一步请求授权码时的redirect_uri完全匹配,大小写、路径都不能错)
    • client_secret: 如果你的应用是机密客户端(比如Web应用),需要填写应用注册里的客户端密钥;公开客户端(比如SPA、移动应用)不需要这个参数

发送请求后,Postman的响应面板会直接返回包含Access Token、ID Token的JSON结果,而不是跳转到https://jwt.ms。

常见坑提醒:

  • 授权码有效期很短(通常5分钟),且只能使用一次,过期或使用后需要重新走授权码流程获取新的授权码
  • redirect_uri必须完全匹配,哪怕多一个斜杠或者大小写不一致都会导致请求失败
  • 确保你的Azure B2C应用注册里已经把https://jwt.ms添加到了重定向URI列表中

内容的提问来源于stack exchange,提问作者me.at.coding

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:35:40