Ответ
JWT (JSON Web Token) — это открытый стандарт (RFC 7519) для создания токенов доступа, представляющих собой компактные, самодостаточные JSON-объекты, подписанные криптографически. В контексте DevOps и микросервисной архитектуры JWT часто используется для безопасной передачи аутентификационных и авторизационных данных между сервисами.
Структура токена (три части, разделённые точками):
- Header (
alg,typ) — определяет алгоритм подписи (например, HS256, RS256) и тип токена. - Payload (claims) — содержит утверждения (claims) о пользователе (например,
sub,name,roles) и метаданные (например,exp— срок действия,iat— время выпуска). - Signature — создаётся путём кодирования header и payload, указанным в header алгоритмом и секретным ключом (HMAC) или приватным ключом (RSA/ECDSA). Подпись обеспечивает целостность токена.
Пример использования для аутентификации API:
- Пользователь логинится, сервер аутентификации (например, Keycloak) валидирует креденшалы и генерирует JWT.
- Клиент включает этот токен в заголовок
Authorization: Bearer <token>последующих запросов к защищённым микросервисам. - Каждый микросервис проверяет подпись токена (используя публичный или общий секретный ключ) и извлекает данные из payload, избегая необходимости обращаться к центральной базе данных за сессией.
Ключевые моменты для DevOps:
- Stateless (без состояния): Не требует хранения сессии на сервере, что упрощает горизонтальное масштабирование.
- Самодостаточность: В payload можно встроить необходимые для авторизации данные (например, scope, roles).
- Безопасность: Токен должен передаваться по HTTPS. Для конфиденциальных данных используется JWE (JSON Web Encryption). Срок действия (
exp) должен быть коротким, для обновления используются refresh-токены. - Инструменты: В экосистеме DevOps для работы с JWT используются утилиты типа
jqдля декодирования, а мониторинг подписанных токенов может быть частью SIEM (Security Information and Event Management).
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶