Выбор ответа Senior Аутентификация и права обновлено

Зачем PKCE

Вопрос

Зачем в Authorization Code flow для SPA и мобильных приложений используют PKCE?

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

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

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

Коротко

Правильный ответ: Публичный клиент не хранит secret; PKCE связывает обмен кода с одноразовым секретом. Клиент генерирует случайный codeverifier, отправляет его хеш (codechallenge) в запросе авторизации, а при обмене кода на токен предъявляет сам verifier.

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

  1. Публичный клиент не хранит secret; PKCE связывает обмен кода с одноразовым секретомправильный ответ
  2. PKCE шифрует access-токен публичным ключом клиента, чтобы его не прочитали в пути
  3. PKCE заменяет HTTPS для redirect URI мобильных приложений с кастомной схемой
  4. PKCE нужен только серверным приложениям с client secret, SPA он не подходит

Разбор

Клиент генерирует случайный code_verifier, отправляет его хеш (code_challenge) в запросе авторизации, а при обмене кода на токен предъявляет сам verifier. Перехватив код (например, через вредоносное приложение с тем же redirect URI), атакующий не сможет обменять его без verifier. Шифрования токенов и замены HTTPS PKCE не даёт. Сейчас его рекомендуют и для конфиденциальных клиентов.

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

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

Термины по теме