OAuth 2.0 menawarkan beberapa mode otorisasi, di antaranya Authorization Code Grant adalah yang paling umum digunakan dan aman. code_challenge adalah fitur yang ditingkatkan keamanan dalam mode ini, terutama digunakan untuk mekanisme PKCE (Proof Key for Code Exchange).
Apa itu PKCE?
PKCE (Proof Key for Code Exchange) adalah ekstensi yang dirancang untuk meningkatkan keamanan pola kode otorisasi OAuth 2.0, terutama saat digunakan pada klien publik seperti aplikasi JavaScript atau aplikasi mobile yang berjalan di browser. PKCE mencegah kode otorisasi disadap dan disalahgunakan dengan menambahkan langkah autentikasi tambahan pada permintaan otorisasi.
code_challenge Peran
code_challenge merupakan bagian dari mekanisme PKCE, dihasilkan dan dikirim selama fase permintaan otorisasi. Mekanisme ini didasarkan pada nilai rahasia (disebut code_verifier), yang ditransformasi oleh algoritma hashing seperti S256. Tujuan code_challenge adalah menyediakan basis validasi untuk permintaan token berikutnya tanpa langsung mengekspos code_verifier.
Pembuatan dan penggunaan code_challenge serta code_verifier
Generasi code_verifier: code_verifier adalah string yang dihasilkan secara acak dengan entropi tinggi,Panjang karakter (antara 43 dan 128). Nilai default adalah 43。
Generasi code_challenge: Dengan menggunakan code_verifier, code_challenge dihasilkan melalui algoritma hashing (seperti S256). Untuk S256, code_challenge adalah pengkodean URL Base64 dari nilai hash SHA-256 code_verifier, tetapi karakter padding = dari pengkodean harus dihapus, dan panjang keluaran harus 43 karakter (karena setelah pengkodean URL Base64, setiap 4 karakter mewakili 3 byte, tetapi blok karakter terakhir mungkin kurang dari 4 karakter, sehingga panjangnya mungkin sedikit berbeda setelah menghapus = karakter).
Gunakan code_challenge dalam permintaan otorisasi: Saat memulai permintaan otorisasi, code_challenge dikirim sebagai salah satu parameter permintaan ke server otorisasi.
Menggunakan code_verifier dalam permintaan token: Ketika server otorisasi mengembalikan kode otorisasi, klien menggunakan kode ini bersama dengan code_verifier yang sebelumnya dihasilkan untuk meminta akses ke endpoint token. Server otorisasi memverifikasi apakah code_challenge dan code_verifier cocok, memastikan permintaan dimulai oleh klien asli.
Generasi PKCE
Alat Pembuatan PKCE Online:Login hyperlink terlihat.
Kode C# dihasilkan sebagai berikut:
Seperti yang ditunjukkan di bawah ini:
Referensi:
Login hyperlink terlihat.
Login hyperlink terlihat. |