Получить доступ

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

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

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

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

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

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

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

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

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

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

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

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

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

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

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

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

Разбор темы

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

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем