所以我试图了解jwt身份验证的流程,我有一些漏洞,这就是我得到的:
我的问题是:
谢谢!
JSON Web令牌由3部分组成,即Header,Payload和Signature。 Header和Payload没有加密而只是编码(base64),这意味着客户端可以简单地解码这些部分。
所以回答你的第一个问题 - >客户端只需解码有效负载部分并从registered claims读取exp属性。如果您使用的是node-jsonwebtoken库,那么它将类似于:
// get the decoded payload and header
var decoded = jwt.decode(token, {complete: true});
console.log(decoded.header);
console.log(decoded.payload)
为了使服务器验证令牌,您必须提供用于签署JWT的密钥对中的密钥或公钥。使用node-jsonwebtoken,这将工作如下:
// verify a token asymmetric
const cert = fs.readFileSync('public.pem'); // get public key
jwt.verify(token, cert, function(err, decoded) {
console.log(decoded.foo) // bar
});
OR
// verify a token symmetric using secret
const decoded = jwt.verify(token, 'mySecret');
总而言之,jwt身份验证流程比以下更简单: