Что такое JWT-токен?

«Что такое JWT-токен?» — вопрос из категории Безопасность, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

JWT (JSON Web Token) — это открытый стандарт (RFC 7519) для создания токенов доступа, представляющих собой компактные, самодостаточные JSON-объекты, подписанные криптографически. В контексте DevOps и микросервисной архитектуры JWT часто используется для безопасной передачи аутентификационных и авторизационных данных между сервисами.

Структура токена (три части, разделённые точками):

  1. Header (alg, typ) — определяет алгоритм подписи (например, HS256, RS256) и тип токена.
  2. Payload (claims) — содержит утверждения (claims) о пользователе (например, sub, name, roles) и метаданные (например, exp — срок действия, iat — время выпуска).
  3. Signature — создаётся путём кодирования header и payload, указанным в header алгоритмом и секретным ключом (HMAC) или приватным ключом (RSA/ECDSA). Подпись обеспечивает целостность токена.

Пример использования для аутентификации API:

  1. Пользователь логинится, сервер аутентификации (например, Keycloak) валидирует креденшалы и генерирует JWT.
  2. Клиент включает этот токен в заголовок Authorization: Bearer <token> последующих запросов к защищённым микросервисам.
  3. Каждый микросервис проверяет подпись токена (используя публичный или общий секретный ключ) и извлекает данные из payload, избегая необходимости обращаться к центральной базе данных за сессией.

Ключевые моменты для DevOps:

  • Stateless (без состояния): Не требует хранения сессии на сервере, что упрощает горизонтальное масштабирование.
  • Самодостаточность: В payload можно встроить необходимые для авторизации данные (например, scope, roles).
  • Безопасность: Токен должен передаваться по HTTPS. Для конфиденциальных данных используется JWE (JSON Web Encryption). Срок действия (exp) должен быть коротким, для обновления используются refresh-токены.
  • Инструменты: В экосистеме DevOps для работы с JWT используются утилиты типа jq для декодирования, а мониторинг подписанных токенов может быть частью SIEM (Security Information and Event Management).

Видео-ответы