Освоение JWT: как устанавливать и управлять сроком действия токена в ваших приложениях

Веб-токены JSON (JWT) стали популярным способом аутентификации и авторизации в веб-приложениях. Одним из важнейших аспектов JWT является управление сроком действия токена, что гарантирует, что токен остается действительным в течение определенного периода времени. В этой статье мы рассмотрим различные методы установки срока действия токена и управления им, а также предоставим вам практические примеры кода.

Метод 1: установка срока действия во время создания токена
При создании JWT вы можете установить срок действия с помощью утверждения exp. Срок действия должен быть указан как временная метка Unix, указывающая количество секунд с 1 января 1970 года. Вот пример использования JavaScript:

const jwt = require('jsonwebtoken');
const secretKey = 'your-secret-key';
const payload = {
  // other claims...
  exp: Math.floor(Date.now() / 1000) + 3600, // Set expiration time to one hour from now
};
const token = jwt.sign(payload, secretKey);

Метод 2: проверка срока действия токена
Чтобы убедиться, что токен по-прежнему действителен, вам необходимо проверить срок его действия. Большинство библиотек JWT предоставляют встроенный механизм для выполнения этой проверки. Вот пример использования библиотеки jsonwebtokenв Node.js:

const jwt = require('jsonwebtoken');
const secretKey = 'your-secret-key';
const token = 'your-token';
jwt.verify(token, secretKey, (err, decoded) => {
  if (err) {
    // Token verification failed
  } else {
    // Token verification succeeded, access the decoded payload
    console.log(decoded);
  }
});

Метод 3: обновление токенов с увеличенным сроком действия
В некоторых сценариях может потребоваться продлить срок действия токена, не требуя от пользователя повторного входа в систему. Этого можно добиться, создав новый токен с увеличенным сроком действия и аннулировав старый токен. Вот пример:

const jwt = require('jsonwebtoken');
const secretKey = 'your-secret-key';
const oldToken = 'your-old-token';
const decoded = jwt.decode(oldToken);
const newToken = jwt.sign({ ...decoded, exp: Math.floor(Date.now() / 1000) + 7200 }, secretKey);

Метод 4: реализация отзыва токена
Отзыв токена позволяет сделать токен недействительным до истечения срока его действия. Один из способов добиться этого — вести список отозванных токенов на стороне сервера. Вот упрощенный пример использования сервера Node.js:

const revokedTokens = new Set();
// When a token needs to be revoked
revokedTokens.add('revoked-token');
// To check if a token is revoked
if (revokedTokens.has('some-token')) {
  // Token is revoked, deny access
} else {
  // Token is valid, grant access
}

Управление сроком действия JWT имеет решающее значение для обеспечения безопасности и достоверности вашего механизма аутентификации. В этой статье мы рассмотрели несколько методов установки и управления сроками действия токенов в ваших приложениях. Понимая эти методы и применяя их соответствующим образом, вы можете повысить безопасность и удобство использования своих веб-приложений.