Postman完成RSA加密并使用加密所得鉴权

本文介绍了如何在Postman中处理RSA加密的接口鉴权问题。由于Postman自身不支持RSA加密,因此需要借助ForgeJS库在pre-request-script中编写代码进行加密。文章详细讲解了从下载Forge到加密并设置全局变量的步骤,强调了需要项目开发提供的公钥,并提示了可能遇到的问题和解决方法。

接口的鉴权方式除了token以外,还会遇到使用RSA加密和签名来处理的请求参数。在使用python完成接口自动化时,可以很方便的利用第三方库rsa,利用需要加密的字节信息和公钥对象用rsa.encrypt生成加密文本,从而得到我们所需要的加密后的信息。

postman相比python就稍微比较复杂了,因为postman作为接口测试工具,多数功能测试者在用,但postman本身不支持rsa加密,在pre-request-script中需要写一定的代码,且需要forgeJS协助。如果不懂代码,那建议寻求开发协助,或者一步步按照以下方式操作即可。


解决方案

      在pre-requests-script中,添加forge模块代码到全局变量中,提取的全局变量(字符串类型)通过eval函数使其在当前环境中执行,利用模块中提供的生成公钥对象和加密方法加密。

 

本次加密得到的产出物,设置到全局变量中

1、token前50位+时间戳 ,加密后得到的sign

2、时间戳timestamp

 


1、下载forge(使用gitbash)

git clone https://github.com/digitalbazaar/forge.git

2、安装forge(使用nmp)

cd 到你gitbash下载的位置
npm install

注意事项:这步我没有报错,如果有报错信息请看一下是否有下载node

 

Postman 实现 RSA 加密请求的过程主要是通过预处理脚本(Pre-request Script)完成对请求数据的加密操作,加密后的结果放入实际发送的数据中。以下是实现步骤: ### 步骤详解 #### 1. 准备公钥和私钥 RSA 密码系统需要一对密钥:**公钥** 和 **私钥**。通常来说,客户端使用服务器提供的公钥加密信息,而服务器则用自己的私钥解密。 #### 2. 配置 Postman 环境变量 为了动态管理加密所需的信息,在环境设置里添加以下内容: - `publicKey` (用于前端加密) - 其他敏感字段如 token 或者 payload 数据等也需要定义好。 例如: ```json { "publicKey": "-----BEGIN PUBLIC KEY-----\n....your public key here...\n-----END PUBLIC KEY-----", "dataToEncrypt": "sensitive information" } ``` #### 3. 编写 Pre-request Script 进行加解密 利用 Node.js 的 crypto 模块来进行 rsa 加密运算。(注意postman内置支持) 在 pre-request script 中加入类似这样的代码片段: ```javascript const crypto = require('crypto'); pm.environment.set("encryptedData", ""); let publicKeyPEM = pm.environment.get("publicKey"); if (!publicKeyPEM) { console.error("Public Key not set in environment variables."); } else { let dataToBeEncrypted = pm.environment.get("dataToEncrypt"); const buffer = Buffer.from(dataToBeEncrypted); // Encrypt using the provided Public Key. var encrypted = crypto.publicEncrypt({ key: publicKeyPEM, padding: crypto.constants.RSA_PKCS1_PADDING }, buffer).toString('base64'); pm.environment.set("encryptedData", encrypted); } ``` 上面这个小段程序会读取指定环境中存储好的公开密匙以及待加密资料然後生成一个新的 base64 格式的字符串表示形式且把它存入名为 `"encryptedData"` 的新环境变数当中去. #### 4. 设置 Request Body 使用加密后的值 然后你需要把刚才产生的加密後面放到你的 http 请求体之中,比如说 POST JSON 类型的话可以像下面这样做: ```json { "secretField" : "{{encryptedData}}" } ``` 这样当您发起此特定请求时它就会自动替换成我们之前计算出来的已编码版本啦! --- 以上就是如何借助 postman 来达成一次简单的基于 RSA 算法的安全通讯了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值