Postman轻松签名,让SHA256withRSA保驾护航!

àì夳堔傛蜴生んèń 2024-03-22 09:00 99阅读 0赞

postman接口签名教程:https://www.bilibili.com/video/BV1r14y1A7MQ/?

目录:导读

前言

获取pmlib

引入依赖bundle.js,有以下两种方式:

使用Pre-request Script对请求进行加签(具体加签字段请看自己项目)

结语


前言

在接口测试中,我们经常需要对请求进行签名,以保证数据的安全性。而SHA256withRSA是一种较为常见的签名算法,它可以使用私钥对数据进行签名,使用公钥进行验签。

但是,实现该算法签名可能会涉及到一些繁琐的操作,给我们的工作带来不小的困扰。

今天,我要向大家介绍一个神器——Postman,它可以轻松完成SHA256withRSA签名的实现,让您的API请求得到更加完善的保护。

接下来,我将简单介绍如何使用Postman实现SHA256withRSA签名,并且分享一些注意事项和技巧,希望能让大家轻松掌握这个技能。

获取pmlib

引入依赖bundle.js,有以下两种方式:

  1. 从github下载postman collection ,并导入进你的集合里
    官方使用介绍
  2. 将所需js所需js所需js全部复制保存成一个全局变量如:pmlib_code
    在这里插入图片描述
  3. 把自己的私钥设置成环境变量如:pri_key
    在这里插入图片描述

使用Pre-request Script对请求进行加签(具体加签字段请看自己项目)

  1. // 使用eval执行js
  2. eval(pm.globals.get('pmlib_code'))
  3. // 生成rfctime
  4. let date = new Date()
  5. let y = date.getFullYear()
  6. let m = date.getMonth()+1<10?'0'+(date.getMonth()+1):(date.getMonth()+1)
  7. let d = date.getDate()<10?'0'+date.getDate():date.getDate()
  8. let hh = date.getHours()<10?'0'+date.getHours():date.getHours();
  9. let mm = date.getMinutes()<10?'0'+date.getMinutes():date.getMinutes()
  10. let ss = date.getSeconds()<10?'0'+date.getSeconds():date.getSeconds()
  11. this.rfc_time = y +'-' + m + '-' + d + ' ' + hh + ':' + mm + ':' + ss
  12. this.rfc_time = this.rfc_time.replace(/\s+/g, 'T')+'+08:00'
  13. pm.variables.set('rfctime',this.rfc_time)
  14. // console.log(pm.variables.get('rfctime'))
  15. const privkey = pm.environment.get('pri_key').replace(/\\n/g, "\n")
  16. // 随机字符串
  17. const uuid = pm.variables.replaceIn('{
  18. {$randomUUID}}')
  19. pm.variables.set('nonce_str', uuid)
  20. const requestBodyRaw = pm.variables.replaceIn(pm.request.body == undefined ? '' : pm.request.body.raw)
  21. const now = pm.variables.replaceIn('{
  22. {$timestamp}}')
  23. pm.variables.set('req_time', now)
  24. // 具体加密字段拼接请依据项目情况案例是:method+\n+url+\n+timestamp+\n+nonce_str+\n+body
  25. var dataToSign = pm.request.method + "\n" +
  26. pm.request.url.getPathWithQuery() + "\n" +
  27. now + "\n" +
  28. uuid + "\n" +
  29. requestBodyRaw
  30. console.log(dataToSign)
  31. const sha256withrsa = new pmlib.rs.KJUR.crypto.Signature({"alg": "SHA256withRSA"});
  32. sha256withrsa.init(privkey);
  33. sha256withrsa.updateString(dataToSign);
  34. const sign = pmlib.rs.hextob64(sha256withrsa.sign());
  35. // console.log(sign);
  36. pm.variables.set('sign', sign)
  37. // 添加请求头
  38. pm.request.headers.add({
  39. key:"Authorization",
  40. value:"SHA256-RSA nonce_str={
  41. {nonce_str}},timestamp={
  42. {req_time}},signature={
  43. {sign}}"
  44. });

至此SHA256withRSA签名已完成
在这里插入图片描述

结语

这篇贴子到这里就结束了,最后,希望看这篇帖子的朋友能够有所收获。

postman接口签名教程(详细版)获取方式:留言【postman学习】即可

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

发表评论

表情:
评论列表 (有 0 条评论,99人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SHA256WithRSA

    在[上文][Link 1]中了解到SHA和RSA,工作中恰好用到扩展应用:SHA256WithRSA,本文总结下学习过程,备忘の 再提供另外一种方法,实现Java版pem密