如何在邮递员中从环境变量设置基本授权?

Posted

技术标签:

【中文标题】如何在邮递员中从环境变量设置基本授权?【英文标题】:How to set basic authorization from environment variable in postman? 【发布时间】:2019-11-14 23:14:52 【问题描述】:

我想使用环境变量在 Postman 中设置基本授权。因为我对不同的 API 调用有不同的授权用户名和密码。

我根据以下设置我的邮递员:

在授权选项卡中:我选择了无身份验证 在标题选项卡中:键=Authorization 值=BasicMyAuthorization 在正文标签中:


    "UserName": "UserName",
    "ServiceUrl": "ServiceUrl"


//which set it from the envitonment variable

在预请求选项卡中:

// Require the crypto-js module
var CryptoJS = require("crypto-js");

// Parse the `username` and `password` environment variables
let credsParsed = CryptoJS.enc.Utf8.parse(`$pm.environment.get('admin'):$pm.environment.get('admin')`);

// Base64 encoded the parsed value
let credsEncoded = CryptoJS.enc.Base64.stringify(credsParsed);

// Set the valuse as an environment variable and use in the request
pm.environment.set('MyAuthorization', credsEncoded);
console.log(credsEncoded);

在测试选项卡中:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("LoginInfoID", jsonData.First.LoginInfoID);

然后我发送了请求并获得了未经授权。

之后,我使用用户名和密码将身份验证类型设置为基本身份验证 它工作正常,我从响应中得到了我想要的。

【问题讨论】:

您能展示一下您当前的 Postman 预请求脚本吗?您如何确定“不同”API 的用户名/密码? 其实现在我通过了普通的键值格式。 您的环境文件是什么样的?您是否添加了变量以便可以从脚本中引用它们?测试标签中有什么? 是的,我创建了带有变量的环境文件,并设置了脚本问题,当我设置除基本身份验证之外的其他类型时,我得到了 403 错误 $pm.environment.get('admin'):$pm.environment.get('admin') 这将获得您在环境文件中保存两次的admin 的值,因此它不会正确。 【参考方案1】:

另一种对我有用的方法:

    设置“用户名”和“密码”的环境变量,并保存 在请求的 Authorization 选项卡中,选择 Basic Auth 在用户名字段中,输入 username 对于密码字段,点击“显示密码”,然后输入 password

希望这对其他人有帮助:)

【讨论】:

这就是答案? 这是迄今为止最直接解决问题的答案 是的,谢谢。由于 Postman 在您添加占位符时不会像在其他地方一样将密码字段着色为橙色,因此您可以立即执行此操作并不是很明显。试过这个,它有效。【参考方案2】:

可以Pre-request Script 中使用cryptp-js,并采用如下非常粗略的解决方案:

// Require the crypto-js module
var CryptoJS = require("crypto-js");

// Parse the `username` and `password` environment variables
let credsParsed = CryptoJS.enc.Utf8.parse(`$pm.environment.get('username'):$pm.environment.get('password')`);

// Base64 encoded the parsed value
let credsEncoded = CryptoJS.enc.Base64.stringify(credsParsed);

// Set the valuse as an environment variable and use in the request
pm.environment.set('authCreds', credsEncoded);

您可以将您的凭据添加到一组不同的 environment 文件中,在密钥 usernamepassword 下。

在请求中,只需像这样设置Header

您还可以在集合/子文件夹级别设置它们,这样您就不会在每个请求中重复自己。

这是您可以实现这一目标的一种方式,但也有其他方式。

【讨论】:

我应该从邮递员的授权选项卡中选择哪种类型? 您不需要选择其中任何一个,只需将标头添加到请求中即可。 Auth 选项卡中的 basic 选项将与脚本执行相同的操作,但脚本以更容易更改的方式执行此操作。 但是当设置 No Auth 或其中任何一个而不是 Basic auth 时得到未经授权的错误得到这个错误 JSONError |无数据,空输入 1:1 您能否使用您在 Postman 中看到的内容以及您设置它的方式的详细信息来更新原始问题。当您在 cmets 中描述某些内容时,很难看到发生了什么。

以上是关于如何在邮递员中从环境变量设置基本授权?的主要内容,如果未能解决你的问题,请参考以下文章

邮递员 - 如何使用环境变量“responseBody.has”?

如何在预请求脚本中更改 Postman 环境?

如何将 swagger 导入带有环境的邮递员?

邮递员:我可以将 JSON 对象保存到环境变量中,以便将其链接到另一个请求中吗?

在Postman中如何设置环境变量?

如何设置PATH环境变量