Веб-токен JSON состоит из 3 частей: заголовка, полезной нагрузки и подписи.Заголовок и полезная нагрузка не шифруются, а просто кодируются (base64), что означает, что клиент может просто декодировать эти части.
Итак, чтобы ответить на ваш первый вопрос -> клиент просто расшифрует часть полезной нагрузки и прочитает свойство 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');