欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Json web token

程序员文章站 2024-02-04 08:53:10
...

用户登录后的凭证大多都用JWT(Json Web Token)下面用Node.js实现签名和验签。

var jwt = require('jsonwebtoken');
var fs = require('fs');

var cert = fs.readFileSync('rsa_private_key.pem');
var token = jwt.sign({userId:'123123',date:12313123},cert,{algorithm:'RS256'});

console.log(token);

var pubCert = fs.readFileSync('rsa_public_key.pem');
jwt.verify(token,pubCert,{algorithms:['RS256']},function (err,payload){
    console.log(err,payload);
});

生成pem 类型的秘钥对命令如下

#先生成私钥
openssl genrsa -out rsa_private_key.pem 4096
#格式换成pkcs8
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
#生成对应的公钥
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem

最主要的就是私钥签名,公钥验签的基本思想。
脚本运行结果

null { userId: '123123', date: 12313123, iat: 1524814012 }

其中iat 是签名的时间戳,所以如果没有其他特殊必要不用在验证信息里面显式添加签名时间。