Перейти к содержанию

Генератор PKCE верификатора и challenge

Создайте криптографически стойкий code_verifier и его code_challenge для OAuth 2.0 PKCE.

43
Выходные данные

Генератор PKCE верификатора и challenge

Этот инструмент генерирует PKCE code_verifier и его соответствующий code_challenge для потока Authorization Code в OAuth 2.0, следуя RFC 7636. Он разработан для разработчиков, интегрирующих одностраничные приложения, мобильные приложения или любого публичного клиента, который не может безопасно хранить клиентский секрет и нуждается в Proof Key for Code Exchange для защиты кода авторизации от перехвата.

code_verifier — это криптографически стойкая строка, построенная исключительно из нарезервированных символов RFC 3986 (A–Z, a–z, 0–9, "-", ".", "_", "~"), длиной от 43 до 128 символов — выберите точную длину с помощью ползунка. Метод challenge определяет, как получается code_challenge: S256 хеширует верификатор с SHA-256 и кодирует дайджест в base64url, что ожидают все современные руководства OAuth и серверы авторизации. Метод plain просто копирует верификатор в challenge без изменений; он существует в спецификации для ограниченных клиентов, которые не могут вычислить SHA-256, не обеспечивает защиту от перехвата, и этот инструмент отмечает это соответственно.

Выходные данные включают raw code_verifier и code_challenge, выбранный метод и готовую строку запроса — code_challenge=...&code_challenge_method=... — которую вы можете напрямую вставить в URL запроса авторизации. Помните верификатор отдельно: он относится к позднему запросу токена, а не к запросу авторизации, и для каждой попытки входа должна создаваться новая пара вместо повторного использования.

Все генерирование происходит локально в вашем браузере с использованием криптографически стойкого источника случайности Web Crypto API и реализации SHA-256 — ничего не загружается и не логируется. Нажмите «Создать новую пару», чтобы получить новый верификатор и challenge, скопируйте выходные данные или загрузите их в виде текстового файла.

FAQ

Что такое PKCE и зачем он мне нужен?
PKCE (Proof Key for Code Exchange, RFC 7636) защищает поток Authorization Code в OAuth 2.0 для клиентов, которые не могут хранить секрет, таких как одностраничные приложения и мобильные приложения. Он связывает запрос авторизации с запросом токена с помощью случайного секрета, чтобы украденный код авторизации не мог быть обменян кем-то еще.
Я должен выбрать S256 или plain?
Используйте S256, если ваш клиент не может вычислить SHA-256. С plain код code_challenge равен code_verifier, поэтому злоумышленник, перехватывший запрос авторизации, уже имеет все необходимое для обмена кода — S256 — это то, что ожидают современные серверы авторизации и часто единственный метод, который они принимают.
Могу ли я использовать один и тот же верификатор и challenge для нескольких логинов?
Нет. Генерируйте новую пару для каждой попытки авторизации. Верификатор предназначен для использования один раз, привязанный к одному потоку, а не фиксированное значение, которое кодирует ваше приложение.
Где идут code_verifier и code_challenge?
code_challenge и code_challenge_method идут в URL начального запроса авторизации. code_verifier отправляется позже, в запросе токена, который обменивает код авторизации на токены — держите его в памяти или хранилище сеанса клиента до тех пор.
Загружается ли созданный верификатор куда-то?
Нет. Генерирование полностью выполняется в вашем браузере с использованием Web Crypto API. Ничего не отправляется на сервер, не логируется и не хранится вне вашего сеанса.