Вопрос с собеседования · Spring

Из каких частей состоит JWT?

JuniorSpring SecuritySpring
Ещё спрашивают так:
  • Как устроен JWT?
Коротко

Три части через точку: header (алгоритм), payload (claims: sub, exp, роли), signature. Каждая — base64url. Payload не зашифрован — его может прочитать любой.

  • Подпись защищает от подделки, а не от чтения
  • Обязательно проверять подпись, exp, iss, aud
  • Алгоритм — фиксировать на сервере

А ещё Шифрованный вариант — JWE

Подробно

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

Что хотят услышать

  • Три части.
  • Payload открыт, подпись — от подделки.

Частые ошибки

  • Считать содержимое токена скрытым от посторонних.
  • Выдавать долгоживущий токен без механизма обновления.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗Логин, пароль и срок действия, закодированные в Base64
  • ✗Открытый ключ, зашифрованное тело и контрольная сумма
  • ✓Заголовок, полезная нагрузка и подпись через точку
  • ✗Идентификатор сессии, адрес сервера и время выдачи

Что спросят дальше

  • Почему самодостаточный токен нельзя отозвать?
  • Что кладут в токен, а что хранят на сервере?

Разбор темы

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования