Generator PKCE code_verifier dan code_challenge

Buat atau tempel code_verifier dan dapatkan code_challenge S256 untuk OAuth 2.0 PKCE (RFC 7636).

code_challenge (S256)

Berjalan sepenuhnya di browser. Data yang Anda masukkan tidak dikirim atau disimpan.

Cara menggunakan

  1. Tekan Buat untuk code_verifier baru atau tempel milik Anda.
  2. code_challenge dihitung sebagai BASE64URL(SHA-256(code_verifier)).
  3. Kirim code_challenge dan code_challenge_method=S256 pada permintaan otorisasi.
  4. Kirim code_verifier pada permintaan token.

PKCE (Proof Key for Code Exchange, RFC 7636) melindungi alur kode otorisasi OAuth 2.0. Mekanisme ini dibuat untuk klien publik seperti aplikasi seluler, aplikasi desktop, dan aplikasi satu halaman (SPA) yang tidak bisa menyimpan client secret dengan aman. Sebelum mengalihkan pengguna, klien membuat rahasia sekali pakai bernama code_verifier dan hanya mengirim hash-nya, yaitu code_challenge. Saat menukar kode dengan token, klien mengirim verifier asli dan server mencocokkan keduanya, sehingga orang yang hanya mencuri kode tidak bisa memakainya.

Generator ini mengambil 32 byte acak dari crypto.getRandomValues di browser lalu mengodekannya ke base64url tanpa padding, sehingga verifier berisi 43 karakter. code_challenge adalah SHA-256 dari verifier, juga dalam base64url tanpa padding, dan selalu 43 karakter. Hanya metode S256 yang tersedia: RFC 7636 juga mendefinisikan plain, tetapi mewajibkan S256 bila klien mampu menghitung SHA-256. Berguna untuk men-debug integrasi login, mencocokkan keluaran pustaka Anda, atau menyusun permintaan uji secara manual.

Verifier yang ditempel langsung di-hash tanpa pemeriksaan format, jadi pastikan sendiri panjangnya 43–128 karakter dari A–Z, a–z, 0–9, “-”, “.”, “_”, dan “~”. Buat verifier baru untuk setiap permintaan otorisasi. Kedua nilai dihitung di halaman ini dengan Web Crypto API dan tidak dikirim ke mana pun.

Pertanyaan umum

Apa itu PKCE?

Proof Key for Code Exchange (RFC 7636). Klien mengirim code_challenge yang di-hash saat otorisasi dan code_verifier asli saat meminta token, sehingga kode otorisasi yang dicuri saja tidak cukup.

Bagaimana code_challenge dihitung?

Dengan S256: SHA-256 dari code_verifier (ASCII), lalu dienkode base64url tanpa padding. Untuk contoh RFC 7636 dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk hasilnya E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM.

Mengapa verifier yang dibuat 43 karakter?

32 byte acak dalam base64url tanpa padding menjadi 43 karakter, panjang minimum yang diizinkan RFC 7636 (43 hingga 128 karakter dari A-Z, a-z, 0-9, -, ., _, ~).

Alat terkait