Как пользоваться
- Нажмите «Создать» для нового code_verifier или вставьте свой.
- code_challenge вычисляется как BASE64URL(SHA-256(code_verifier)).
- Передайте code_challenge и code_challenge_method=S256 в запросе авторизации.
- Передайте code_verifier в запросе токена.
PKCE (Proof Key for Code Exchange, RFC 7636) защищает поток OAuth 2.0 с кодом авторизации. Он создан для публичных клиентов — мобильных и десктопных приложений, SPA, — которые не могут надёжно хранить client secret. Перед перенаправлением клиент создаёт одноразовый секрет code_verifier и отправляет только его хеш — code_challenge. При обмене кода на токены он передаёт исходный verifier, и сервер проверяет, что значения совпадают. Перехватив один лишь код, злоумышленник не сможет его использовать.
Генератор берёт 32 случайных байта из crypto.getRandomValues браузера и кодирует их в base64url без выравнивания, поэтому verifier получается длиной 43 символа. code_challenge — это SHA-256 от verifier, тоже в base64url без выравнивания, и его длина всегда 43 символа. Доступен только метод S256: в RFC 7636 есть и plain, но если клиент умеет считать SHA-256, он обязан использовать S256. Инструмент пригодится для отладки входа через OAuth, сверки с выводом вашей библиотеки и ручной сборки тестовых запросов.
Вставленный verifier хешируется как есть, без проверки формата. Убедитесь сами, что он содержит от 43 до 128 символов из набора A–Z, a–z, 0–9, «-», «.», «_» и «~». Для каждого запроса авторизации создавайте новый verifier. Оба значения вычисляются на этой странице через Web Crypto API и никуда не отправляются.