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

PKCE

Вопрос

Зачем нужен PKCE в OAuth 2.0 Authorization Code flow?

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

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

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

Коротко

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

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

  1. Привязывает код к клиенту, начавшему вход: без code_verifier перехваченный код не обменятьправильный ответ
  2. Шифрует access-токен ключом клиента, чтобы его нельзя было прочитать при перехвате
  3. Заменяет проверку redirect_uri: с PKCE сервер может принимать любой адрес возврата
  4. Нужен серверным приложениям с client_secret, публичным клиентам он не подходит

Разбор

Клиент генерирует случайный code_verifier, отправляет его хеш (code_challenge) в запросе авторизации, а при обмене кода предъявляет сам verifier. Перехвативший код его не знает. PKCE не шифрует токены и не отменяет проверку redirect_uri. Он обязателен для публичных клиентов (SPA, мобильные) и рекомендуется для всех.

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

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