栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

JWT接口自动化工具类

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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试了,凑合着看看,或者百度一下也行。

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/893260.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号