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