使用PostMan结合MFA从Microsoft Entra ID获取访问令牌出错
排查Microsoft Entra ID访问令牌获取失败问题
1. 核对请求端点与授权类型配置
你当前使用的https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/authorize是授权码流程的授权端点,需确保PostMan Auth标签页的配置匹配:
- 选择「OAuth 2.0」授权类型,授权流程选「Authorization Code」
- 必须补充填写
Access Token URL:https://login.microsoftonline.com/{{tenantId}}/oauth2/v2.0/token,这是令牌交换的核心端点,不能遗漏
2. 验证应用注册的重定向URI
PostMan默认回调地址是https://oauth.pstmn.io/v1/callback,请确认:
- 在应用注册的「身份验证」-「重定向URI」中已添加该地址,类型选择「Web」
- URI的大小写、斜杠、协议(https)必须完全一致,哪怕细微差异都会导致验证失败
3. 检查应用权限配置
- 确认
User.Read权限的状态为已授予管理员同意(委托权限需用户或管理员同意,管理员同意可避免用户端权限弹窗问题) - 授权范围(Scope)填写
openid User.Read offline_access,offline_access用于获取刷新令牌,减少重复授权操作
4. PostMan OAuth细节校验
- 「Client ID」必须是应用注册的「应用程序(客户端)ID」,「Client Secret」要和你创建的客户端密钥完全一致(密钥仅生成时可见,若遗忘需重新创建)
- 勾选「Use Authorization Code with PKCE」,Entra ID对多数场景要求启用PKCE增强安全性,未启用可能导致验证失败
5. 企业环境额外排查
如果是企业租户,需确认:
- 账号未被条件访问策略限制(比如要求合规设备、特定IP范围)
- 应用注册未被租户管理员禁用或限制访问
6. 快速测试定位问题
直接在浏览器中访问以下拼接后的授权URL(替换占位符),看是否能正常获取授权码:
https://login.microsoftonline.com/你的租户ID/oauth2/v2.0/authorize?client_id=你的客户端ID&response_type=code&redirect_uri=https://oauth.pstmn.io/v1/callback&scope=User.Read
若能获取授权码,说明授权环节正常,问题出在PostMan的令牌交换配置;若仍报错,直接根据浏览器返回的错误信息针对性修复。
内容的提问来源于stack exchange,提问作者Thomas Segato
相关产品推荐
相关产品推荐

