Из каких частей состоит JWT?
- Как устроен JWT?
Три части через точку: header (алгоритм), payload (claims: sub, exp, роли), signature. Каждая — base64url. Payload не зашифрован — его может прочитать любой.
- Подпись защищает от подделки, а не от чтения
- Обязательно проверять подпись, exp, iss, aud
- Алгоритм — фиксировать на сервере
А ещё Шифрованный вариант — JWE
Подробно
Подпись позволяет проверить, что содержимое не подменяли, — именно поэтому серверу не нужно ходить в хранилище сессий, чтобы доверять токену. Критически важно понимать, что подпись не равна шифрованию: полезная нагрузка всего лишь закодирована и читается кем угодно, поэтому персональные данные и секреты туда не кладут. Второе следствие самодостаточности — токен нельзя отозвать до истечения срока, отсюда практика делать время жизни коротким.
Что хотят услышать
- Три части.
- Payload открыт, подпись — от подделки.
Частые ошибки
- Считать содержимое токена скрытым от посторонних.
- Выдавать долгоживущий токен без механизма обновления.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Логин, пароль и срок действия, закодированные в Base64
- ✗Открытый ключ, зашифрованное тело и контрольная сумма
- ✓Заголовок, полезная нагрузка и подпись через точку
- ✗Идентификатор сессии, адрес сервера и время выдачи
Что спросят дальше
- Почему самодостаточный токен нельзя отозвать?
- Что кладут в токен, а что хранят на сервере?
Разбор темы
- Аутентификация: JWT, OAuth2/OIDC и method security
Структура и валидация JWT, проблема отзыва, роли OAuth2 и authorization code flow, OIDC, и авторизация на уровне методов.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.