Przejdź do treści

Generator weryfikatora i wyzwania PKCE

Wygeneruj kryptograficznie losowy code_verifier i jego code_challenge dla OAuth 2.0 PKCE.

43
Wynik

Generator weryfikatora i wyzwania PKCE

To narzędzie generuje PKCE code_verifier i odpowiadający mu code_challenge dla przepływu kodu autoryzacji OAuth 2.0 zgodnie z RFC 7636. Jest przeznaczone dla deweloperów konfigurujących aplikacje jednostronicowe, aplikacje mobilne lub dowolnego publicznego klienta, który nie może bezpiecznie przechowywać tajnego klienta i potrzebuje Proof Key for Code Exchange do ochrony kodu autoryzacji przed przechwyceniem.

code_verifier to ciąg znaków generowany kryptograficznie losowo, zbudowany tylko z niezarezerwowanych znaków RFC 3986 (A–Z, a–z, 0–9, "-", ".", "_", "~"), o długości od 43 do 128 znaków — wybierz dokładną długość za pomocą suwaka. Metoda wyzwania określa sposób wyprowadzenia code_challenge: S256 miesza weryfikator za pomocą SHA-256 i koduje base64url wynik, i to jest to, czego oczekują wszystkie nowoczesne przewodniki OAuth i serwery autoryzacji. Metoda plain po prostu kopiuje weryfikator do wyzwania bez zmian; istnieje w specyfikacji dla klientów ograniczonych, którzy nie mogą obliczyć SHA-256, nie zapewnia żadnej ochrony przed przechwyceniem i to narzędzie jasno to wskazuje.

Wyjście zawiera surowy code_verifier i code_challenge, wybraną metodę i gotowy ciąg zapytania — code_challenge=...&code_challenge_method=... — który możesz wstawić bezpośrednio do adresu URL żądania autoryzacji. Zapamiętaj weryfikator osobno: należy do późniejszego żądania tokenu, nie do autoryzacji, i świeża para powinna być generowana dla każdej próby logowania zamiast ponownego użycia.

Cała generacja odbywa się lokalnie w przeglądarce przy użyciu kryptograficznie bezpiecznego źródła losowości Web Crypto API i implementacji SHA-256 — nic nie jest wysyłane ani logowane nigdzie. Kliknij "Wygeneruj nową parę" aby otrzymać świeży weryfikator i wyzwanie, skopiuj wyjście lub pobierz je jako plik .txt.

Częste pytania

Co to jest PKCE i dlaczego go potrzebuję?
PKCE (Proof Key for Code Exchange, RFC 7636) chroni przepływ kodu autoryzacji OAuth 2.0 dla klientów, którzy nie mogą przechowywać tajemnic, takich jak aplikacje jednostronicowe i aplikacje mobilne. Wiąże żądanie autoryzacji z żądaniem tokenu za pomocą losowego tajemstwa, dzięki czemu ukradziony kod autoryzacji nie może być wykorzystany przez kogoś innego.
Czy powinienem wybrać S256 czy plain?
Używaj S256, chyba że Twój klient naprawdę nie może obliczyć SHA-256. W metodzie plain code_challenge równa się code_verifier, więc atakujący, który przechwycił żądanie autoryzacji, ma już wszystko co potrzebne do wymiany kodu — S256 to to, czego oczekują nowoczesne serwery autoryzacji i często jedyną metodę, którą akceptują.
Czy mogę ponownie użyć tego samego weryfikatora i wyzwania dla wielu logowań?
Nie. Wygeneruj nową parę dla każdej próby autoryzacji. Weryfikator jest przeznaczony jako tajemnica jednorazowa powiązana z jednym przepływem, a nie jako stała wartość, którą na stałe koduje Twoja aplikacja.
Gdzie idą code_verifier i code_challenge?
code_challenge i code_challenge_method przechodzą do początkowego adresu URL żądania autoryzacji. code_verifier zostaje wysłany później w żądaniu tokenu, które wymienia kod autoryzacji za tokeny — przechowuj go w pamięci lub magazynie sesji na kliencie aż do tego momentu.
Czy wygenerowany weryfikator jest wysyłany gdziekolwiek?
Nie. Generacja odbywa się wyłącznie w przeglądarce przy użyciu Web Crypto API. Nic nie jest wysyłane na serwer, nie jest logowane ani przechowywane poza Twoją sesją.