在nodejs中按比例缩放JWT的正确方法是什么。我正在使用RSA
生成令牌。因此,每个服务器都能够解码自己生成的令牌。所有负载平衡都是无状态的,因此无法知道哪个服务器生成了令牌。我正在使用的当前代码是
helper['generateToken'] = (user)=>{
return new Promise((fullfill,reject)=>{
try{
var cert = fs.readFileSync('pvt.key');
var token = jwt.sign(user,process.env.SECRET);
fullfill(token);
}catch(ex){
reject(new Error("Your token could not be generated"));
}
});
}
generateToken
函数可以在任何图像上运行,并且所有图像都具有不同的私钥。什么是最好的扩展方式。
只是旁注,我在docker swarm上运行实例
答案 0 :(得分:1)
因此每个服务器都能够解码自己生成的令牌。所有负载平衡都是无状态的,因此无法知道哪个服务器生成了令牌。
...并且所有人都有不同的私钥。
由于服务器可能会收到其他服务器发出的令牌,而您无法区分发件人,您需要使用相同的签名密钥。
替代
使用共享文件夹或数据库在实例之间共享密钥(并因此保护对其的访问权限)
使用所有实例共享的中央身份验证微服务来签署令牌。如果正在使用密钥对,则可以在每个实例的本地完成签名验证。问题:还需要负载平衡,但您可以降低密钥共享的复杂性
测试所有可能的密钥(不是很好):使用不对称密钥对(RSA)并使用所有可用的公钥验证令牌签名以检查是否正确