Выбор ответа Senior ASP.NET Core обновлено

Что проверять в JWT

Вопрос

API принимает JWT в заголовке Authorization. Какой набор проверок обязателен на стороне сервера?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Подпись по ожидаемому алгоритму, exp/nbf, iss и aud. Декодировать токен может кто угодно, это не проверка.

Варианты ответа

  1. Подпись по ожидаемому алгоритму, exp/nbf, iss и audправильный ответ
  2. Только то, что токен корректно декодируется из Base64Url
  3. Только подпись: если она верна, остальным claims можно доверять
  4. Наличие claim sub и совпадение IP клиента с IP при выдаче

Разбор

Декодировать токен может кто угодно, это не проверка. Верная подпись доказывает только, что токен выпустил владелец ключа, но не что он ещё действует и предназначен вашему API: без exp украденный токен вечен, без aud подойдёт токен другого сервиса того же провайдера. Алгоритм тоже фиксируют, чтобы исключить подмену на none или путаницу HS/RS. Привязка к IP ломается у мобильных клиентов и за прокси и не входит в стандартные проверки.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.