0Pricing
Cryptology Academy · Pelajaran

Klaim OpenID Connect dan Token ID

Uraikan token ID berbasis JWT, pahami validasi klaim, dan terapkan OIDC dengan benar.

Klaim OpenID Connect dan Token ID adalah pelajaran Cryptology Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cryptology Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cryptology Academy mencakup 4 pelajaran total.

OIDC sebagai Lapisan Identitas

OpenID Connect (OIDC) menambahkan lapisan identitas di atas OAuth 2.0. Meskipun OAuth 2.0 menangani otorisasi (apa yang dapat diakses aplikasi ini?), OIDC menjawab pertanyaan identitas (siapa penggunanya?). OIDC diimplementasikan dengan menambahkan ruang lingkup "openid" ke permintaan OAuth 2.0, yang menyebabkan server otorisasi mengembalikan token ID bersama token akses.

Token ID sebagai JWT

Token ID OIDC adalah JSON Web Token (JWT) yang berisi klaim tentang pengguna yang telah diautentikasi. JWT ditandatangani oleh server otorisasi menggunakan kunci privatnya (biasanya RS256 atau ES256), lalu pihak pengandalan (aplikasi klien) memverifikasi tanda tangan tersebut menggunakan kunci publik server otorisasi yang dipublikasikan (titik akhir JWKS).

Klaim Token ID Standar

Klaim token ID yang diwajibkan dan umum digunakan: "sub" (subjek, pengenal pengguna unik), "iss" (penerbit, URL server otorisasi), "aud" (audiens, ID klien), "exp" (stempel waktu Unix kedaluwarsa), "iat" (stempel waktu Unix saat diterbitkan). Opsional: "auth_time" (waktu autentikasi terjadi), "nonce" (pencegahan pemutaran ulang), "at_hash" (hash token akses), "acr" (kelas konteks autentikasi), "amr" (metode autentikasi yang digunakan).

Titik Akhir UserInfo

Titik akhir OIDC UserInfo mengembalikan klaim tambahan tentang pengguna yang telah diautentikasi ketika dipanggil dengan token akses yang valid. Klien meminta kumpulan klaim tertentu melalui ruang lingkup: "profile" (nama, foto, lokalitas), "email" (email, email_verified), "address" (alamat terformat), "phone" (phone_number, phone_number_verified). Respons UserInfo berupa objek JSON atau JWT.

Memvalidasi Token ID: Tanda Tangan

Validasi token ID dimulai dengan verifikasi tanda tangan. Klien mengambil JWKS (JSON Web Key Set) milik server otorisasi dari titik akhir standar, menemukan kunci yang cocok dengan parameter "kid" (ID kunci) pada header JWT, lalu memverifikasi tanda tangan JWT. Ini membuktikan bahwa token diterbitkan oleh server otorisasi yang sah dan tidak diubah.

Memvalidasi Klaim: iss, aud, exp

Setelah verifikasi tanda tangan, klien harus memvalidasi hal-hal berikut: "iss" harus sama persis dengan URL server otorisasi yang diharapkan (termasuk skema dan jalur). "aud" harus memuat client_id milik klien tersebut. "exp" harus berada di masa depan (tolak token yang sudah kedaluwarsa). "iat" seharusnya masih cukup baru. Keempat pemeriksaan ini diwajibkan oleh spesifikasi OIDC.

Nonce untuk Mencegah Pemutaran Ulang

Klaim nonce mencegah serangan pemutaran ulang token ID. Klien membuat nonce acak dan menyertakannya dalam permintaan otorisasi. Server otorisasi menyisipkan nonce tersebut ke dalam token ID. Klien memverifikasi bahwa nonce dalam token ID sama dengan yang dikirimkannya. Ini mencegah penyerang yang menangkap token ID memutarnya kembali untuk melakukan autentikasi pada sesi yang berbeda.

Kelemahan Token ID pada Alur Implisit

Ketika OIDC menggunakan alur implisit (response_type=id_token), token ID dikembalikan langsung dalam fragmen URL. Klien harus memvalidasi at_hash (hash token akses) untuk mengikat token akses ke token ID. Tanpa validasi at_hash, serangan substitusi token akses dapat terjadi. Ini merupakan alasan lain mengapa alur implisit tidak lagi direkomendasikan.

Ruang Lingkup dan Klaim OIDC

OIDC mendefinisikan pemetaan standar ruang lingkup ke klaim. Ruang lingkup "openid" wajib digunakan dan mengembalikan klaim "sub". Ruang lingkup "profile" mengembalikan name, given_name, family_name, nickname, picture, website, locale, zoneinfo, updated_at. Ruang lingkup "email" mengembalikan email dan email_verified. Meminta ruang lingkup yang tidak diperlukan melanggar prinsip pengungkapan minimal dan dapat mengekspos data pengguna yang sensitif.

Penyisipan Klaim melalui Penyedia Berbahaya

Ketika mengimplementasikan login OIDC dengan banyak penyedia (misalnya, "Masuk dengan Google" dan "Masuk dengan GitHub"), serangan penyisipan klaim mungkin terjadi. Jika penyerang membuat akun di Penyedia B dengan alamat email korban yang menggunakan Penyedia A, penyerang mungkin mendapat akses jika aplikasi mencocokkan akun hanya berdasarkan klaim email. Selalu cocokkan akun berdasarkan pasangan (iss, sub), bukan email saja.

Kasus Penggunaan Alur Hibrida

Alur hibrida OIDC (response_type=code id_token) mengembalikan kode otorisasi dan token ID dari titik akhir otorisasi. Token ID memungkinkan verifikasi identitas segera, sementara kode ditukarkan dengan token melalui kanal belakang. Alur ini digunakan ketika klien perlu segera menampilkan informasi pengguna sebelum menyelesaikan pertukaran token melalui kanal belakang.

Pemeriksaan Validasi Token ID

Kombinasi klaim apa yang harus divalidasi oleh pihak pengandalan dalam token ID OIDC?

Rangkuman Pelajaran: Klaim OIDC dan Token ID

OIDC menambahkan token ID JWT yang ditandatangani ke alur OAuth 2.0. Validasi tanda tangan (JWKS), iss (pencocokan tepat), aud (client_id), exp (belum kedaluwarsa), dan nonce (jika dikirimkan). Titik akhir UserInfo menyediakan klaim tambahan melalui ruang lingkup. Cocokkan akun berdasarkan pasangan (iss, sub), jangan pernah berdasarkan email saja, untuk mencegah penyisipan klaim. Alur implisit tidak lagi direkomendasikan; gunakan kode otorisasi dengan PKCE untuk OIDC.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Klaim OpenID Connect dan Token ID” gratis?

Ya — teks lengkap “Klaim OpenID Connect dan Token ID” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cryptology Academy, upgrade ke CoddyKit PRO. Kursus Cryptology Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Klaim OpenID Connect dan Token ID”?

Uraikan token ID berbasis JWT, pahami validasi klaim, dan terapkan OIDC dengan benar. Kamu berlatih Cryptology Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Cryptology Academy?

Tidak diperlukan pengalaman sebelumnya. Cryptology Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Klaim OpenID Connect dan Token ID” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Cryptology Academy ini?

Ya. Setiap pelajaran Cryptology Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Alur OAuth 2.0 dan Jenis Token
  2. PKCE: Mengamankan Klien Publik
  3. Klaim OpenID Connect dan Token ID
  4. Kerentanan OAuth dan Pola Serangan
← Kembali ke Cryptology Academy