JWT接口自动化工具类

背景

在开发过程中,经常会遇见用jwt加密的接口,这类接口在使用apipost、postman这类接口工具调用的时候,很麻烦,需要弄一个鉴权token,而且这类token都是有时效性的,每次都需要新生成一个,我是一个效率很高的人(想偷懒),每次生成token太麻烦了,效率太低受不了,我就弄了下面的js脚本。(先上代码为敬)

// 默认15min过期
var key = "asdfghj1234567jhgfdssdfg";
var secret = "jhgfdsdfghj765432345t6yuhgf";

function base64url(source) {    
// 编码源数据    
var encodedSource = CryptoJS.enc.Base64.stringify(source);   

// 移除特殊符号相关, 以及使用-替换+, 使用_替换/    
encodedSource = encodedSource.replace(/=+$/, '');    
encodedSource = encodedSource.replace(/\+/g, '-');    
encodedSource = encodedSource.replace(/\//g, '_');    

return encodedSource;
}

// jwt header
let header = JSON.stringify({    
    "alg": "HS256",    
    "typ": "JWT"
 });
 var signHeader = base64url(CryptoJS.enc.Utf8.parse(header));
 
//jwt payload 一般需要验证的东西都是放在下面参数的某些
//iss  jwt签发者 
//sub jwt所面向的用户
//aud  接收jwt的一方
//exp  jwt的过期时间,这个过期时间必须要大于签发时间
//nbf  定义在什么时间之前,该jwt都是不可用的
//iat  jwt的签发时间
//jti  jwt的唯一身份标识,主要用来作为一次性token,从而回避重放攻击
 let payload = JSON.stringify({    
     "iss": key,    
     // 开始时间    
     "iat": Math.floor(Date.now() / 1000),    
     // 过期时间 15min过期   
     "exp": Math.floor(Date.now() / 1000) + 15 * 60
 });
 var signPayload = base64url(CryptoJS.enc.Utf8.parse(payload));
 
 // jwt signature = header + payload
 var signSignature = signHeader + "." + signPayload;
 var signature = base64url(CryptoJS.HmacSHA256(signSignature, secret));
 
 // jwt token  = head + payload + signature
 var token = signSignature + "." + signature;

简单使用

至于这个脚本怎么用,我使用的是apipost(当时嫌弃postman英文的),我在生成jwt token之后会加上一句apt.variables.set("jwttoken", token);,然后再把这个脚本放到apipost接口参数栏的“预执行脚本”里面(直接copy进去),这个语句的作用就是把生成jwt token放到“jwttoken”这个环境变量里面,然后在参数栏的“认证”选择bearer auth认证,里面的值输入{{jwttoken}},然后就正常调用接口就行。

简单说明

  • 上面的jwt token 是用js语言生成的,在使用的时候注意CryptoJS类库的引用。
  • 这个用js生成的jwt token是直接弄好了的,一般你修改payload里面的参数就行,代码里面也有备注。
  • 如果是postman的话,apt.variables.set("jwttoken", token);,这句里面的apt换成postman就行,应该是这样的,作者不是一个勤劳的人,不想再下一个postman试了,凑合着看看,或者百度一下也行。

看到这里,想必“码友”也是一个爱偷懒效率却很高的人,点个赞呗!😜

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值