Azure AD B2C中OAuth 2.0授权码流手动获取access token:Postman使用困惑
解决Azure B2C授权码换Token时Postman无法获取响应的问题
你混淆了OAuth2.0授权码流程中两个步骤里redirect_uri的作用:
获取授权码的步骤:这是浏览器端的跳转流程,授权服务器会把授权码通过
redirect_uri的地址返回(比如https://jwt.ms会在页面上显示授权码),这一步redirect_uri是用来接收授权码的实际地址。用授权码换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_codeclient_id: 你的Azure B2C应用注册IDscope: 和第一步获取授权码时完全一致的权限范围(比如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
相关产品推荐
相关产品推荐

