生成JWT表单标头和有效载荷

编程入门 行业动态 更新时间:2024-10-15 22:31:39

生成JWT表单标头和有效<a href=https://www.elefans.com/category/jswz/34/1751291.html style=载荷"/>

生成JWT表单标头和有效载荷

我正在使用节点js在后端服务器中创建jwt。我正在使用一个库来签名/验证JWT,它工作正常。一次jwt.io,我将粘贴我登录时获得的令牌,并且可以在有效负载中看到我的数据。所以问题是我试图从标头和在jwt.io中返回的有效负载生成签名这是我尝试做的,但是没有用,我有些困惑。用于签名的算法是默认的HS256。

const crypto = require("crypto");

// encode base64 the header
let jsonHeader = JSON.stringify({
  alg: "HS256",
  typ: "JWT",
});
let bs64header = Buffer.from(jsonHeader).toString("base64").split("=")[0];
console.log("bs64header :>>\n ", bs64header); //look the same as the token i got

// encode vase64 the payload
let jsonPayload = JSON.stringify({
  id: "5eb20004ac94962628c68b91",
  iat: 1589125343,
  exp: 1589989343,
  jti: "37743739b1476caa18ca899c7bc934e1aba63ba1",
});
let bs64payload = Buffer.from(jsonPayload).toString("base64").split("=")[0];
console.log("bs64Payload :>> \n", bs64payload); //look the same as the token i got

// TRY to generate the signature from the Base64Header and Base64Payload
// with the secret code that i used to sign the JWT
let secret = "0d528cb666023eee0d44e725fe9dfb751263d2f68f07998ae7388ff43b1b504f";
let signature = bs64header + "." + bs64payload;

let hashed = crypto
  .createHash("sha256", secret)
  .update(signature)
  .digest("hex");

console.log("hashed :>> \n", hashed);

let bs64signature = Buffer.from(hashed).toString("base64").split("=")[0];
console.log("bs64signature>>", bs64signature); //This is where i got stuck.

// let jwt = bs64header + "." + bs64payload + "." + bs64signature;
// console.log("jwt>>", jwt);


回答如下:

我已对您的代码进行了很多修改,以使其重复性更小,更易于阅读。我不确定这是否行得通,所以如果有任何错误,请发表评论。

我已经在runkit中对其进行了测试,并且还使用jwt.io检查了输出内容。输出似乎是相同的,因此我可以肯定这是可行的。

更改

  • [创建了一个用于base64编码对象和字符串的函数。
  • 创建了一个使base64字符串使用URL安全字符集的函数。
  • crypto.createHash()更改为crypto.createHash(),因此实际上可以使用密钥。
crypto.createHmac()

更多推荐

生成JWT表单标头和有效载荷

本文发布于:2024-05-07 10:20:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1755795.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:载荷   表单   JWT

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!