Перейти к содержимому
ecdsa.com

PKCE (ключ подтверждения для обмена кода)

Расширение OAuth из RFC 7636: клиент отправляет хеш случайного code_verifier в запросе авторизации, а сам code_verifier — в запросе токена, поэтому перехваченный код авторизации бесполезен.
Другие написанияPKCEProof Key for Code Exchangecode_verifiercode_challengeS256

Клиент генерирует code_verifier длиной 43–128 символов из незарезервированных символов URL, отправляет в запросе авторизации code_challenge = BASE64URL(SHA256(code_verifier)) с code_challenge_method=S256, а затем доказывает владение, отправляя сам code_verifier на эндпоинт токена. Метод plain отправляет сам code_verifier в качестве challenge, и использовать его не следует.

PKCE создавался для мобильных приложений, где другие приложения могли перехватить URI перенаправления, но он также предотвращает внедрение кода авторизации в веб-приложениях, поэтому RFC 9700 рекомендует его для всех клиентов, а черновик OAuth 2.1 делает обязательным. Он не заменяет аутентификацию конфиденциальных клиентов, и сервер авторизации должен отклонять запросы токена без code_verifier, если ранее был отправлен challenge.

Стандарты и ссылки

Все термины