Выбор ответа Senior Аутентификация и права обновлено
Зачем PKCE
Вопрос
Зачем в Authorization Code flow для SPA и мобильных приложений используют PKCE?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Публичный клиент не хранит secret; PKCE связывает обмен кода с одноразовым секретом. Клиент генерирует случайный codeverifier, отправляет его хеш (codechallenge) в запросе авторизации, а при обмене кода на токен предъявляет сам verifier.
Варианты ответа
- Публичный клиент не хранит secret; PKCE связывает обмен кода с одноразовым секретомправильный ответ
- PKCE шифрует access-токен публичным ключом клиента, чтобы его не прочитали в пути
- PKCE заменяет HTTPS для redirect URI мобильных приложений с кастомной схемой
- PKCE нужен только серверным приложениям с client secret, SPA он не подходит
Разбор
Клиент генерирует случайный code_verifier, отправляет его хеш (code_challenge) в запросе авторизации, а при обмене кода на токен предъявляет сам verifier. Перехватив код (например, через вредоносное приложение с тем же redirect URI), атакующий не сможет обменять его без verifier. Шифрования токенов и замены HTTPS PKCE не даёт. Сейчас его рекомендуют и для конфиденциальных клиентов.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.