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

Postman预请求脚本如何获取Azure认证响应的Authorization_code

核心限制说明

Postman预请求脚本运行在隔离的JS沙箱中,没有浏览器渲染能力,也无法直接监听网络端口接收回调,不存在纯预请求脚本无依赖完成Authorization Code流程的实现——这个流程本身的设计就要求经过用户代理(浏览器)完成身份核验(尤其是Azure AD开启MFA、条件访问策略的场景,必须人工操作),你之前提到的「向authorize地址发POST请求」是认知错误,该接口为GET请求,且无法绕过交互环节直接返回授权码。

可落地方案

方案1:使用Postman原生OAuth2授权能力(推荐,稳定无额外代码)

这是Postman原生支持的能力,不需要自己写监听回调的逻辑:

  • 打开集合或单个请求的Authorization配置页,授权类型选择OAuth 2.0
  • 按如下规则填写配置:
    • Grant type 选择Authorization Code
    • Callback URL 填写https://www.getpostman.com/oauth2/callback,Postman内部会自动拦截跳转到这个地址的请求,提取URL中的code参数,不需要你手动监听
    • Auth URL填写对应Azure租户的授权端点:https://login.microsoftonline.com/{替换为你的租户ID}/oauth2/v2.0/authorize
    • Access Token URL填写对应Azure租户的令牌端点:https://login.microsoftonline.com/{替换为你的租户ID}/oauth2/v2.0/token
    • 补充填写Client ID、Client Secret、请求所需的Scope参数
  • 勾选Authorize using browser选项,首次使用时点击「Get New Access Token」,在弹出的浏览器页面完成Azure AD登录校验即可。后续Postman会自动存储拿到的refresh_token,access_token过期时会自动换发新令牌,不需要重复手动登录。

方案2:自定义预请求脚本实现(适合需要高度自定义逻辑的测试场景)

如果一定要把逻辑写在预请求脚本中,需要额外配合本地运行的轻量回调服务接收授权码,步骤如下:

  1. 本地运行一个极简的HTTP服务,用来接收Azure的回调请求,同时提供接口给Postman脚本查询拿到的授权码,示例服务代码(本地Node环境运行,不需要放到Postman里):
const http = require('http');
let latestCode = null;
const server = http.createServer((req, res) => {
  const requestUrl = new URL(req.url, 'http://localhost:3000');
  // 接收Azure回调
  if (requestUrl.pathname === '/callback') {
    latestCode = requestUrl.searchParams.get('code');
    res.end('Authorization completed, you can close this page now');
    return;
  }
  // 给Postman脚本提供查询code的接口
  if (requestUrl.pathname === '/get-code') {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.end(latestCode || '');
    return;
  }
});
server.listen(3000, () => console.log('Callback service running at http://localhost:3000'));
  1. 把Azure AD应用的重定向URI配置为http://localhost:3000/callback
  2. 预请求脚本逻辑参考:
  • 先检查环境变量中是否存在未过期的access_token,存在则直接使用
  • 不存在则拼接好Azure授权URL,通过控制台输出提示,让用户手动在浏览器打开该URL完成登录
  • 脚本轮询请求本地服务的http://localhost:3000/get-code接口,直到拿到非空的code值
  • 拿到code后调用Azure令牌端点,用code换access_token和refresh_token,存储到Postman环境变量中供后续请求使用

注意:该方案仅适合测试环境使用,无法绕过Azure AD的MFA、条件访问等安全策略,每次授权码过期后仍需要人工打开浏览器完成一次登录操作。

内容的提问来源于stack exchange,提问作者Filip M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:03:20