Apa Itu OpenID Connect?
2026-06-02 23:30:13 - Admin
<style> body{ font-family: Arial, sans-serif; line-height: 1.6; margin:0; padding:0; background:#f9f9f9; color:#333; } header{ background:#4A90E2; color:#fff; padding:20px 10%; text-align:center; } main{ max-width:800px; margin:20px auto; padding:0 10px; } h1{ margin-top:0; font-size:2em; } h2{ color:#4A90E2; margin-top:30px; } p{ margin:15px 0; } ul{ margin:15px 0 15px 20px; } code{ background:#eef; padding:2px 4px; border-radius:3px; } a{ color:#4A90E2; } </style> <header> <h1>Apa Itu OpenID Connect?</h1> </header> <main> <section> <h2>Pengantar</h2> <p>Di era digital yang semakin terhubung, autentikasi dan otorisasi menjadi dua aspek krusial yang harus dikelola dengan aman dan efisien. <strong>OpenID Connect (OIDC)</strong> muncul sebagai standar modern yang memudahkan proses login satu kali (single sign on) sekaligus memberikan data profil pengguna kepada aplikasi yang memerlukannya.</p> </section> <section> <h2>Definisi OpenID Connect</h2> <p>OpenID Connect adalah lapisan identitas yang dibangun di atas protokol OAuth 2.0. Ia menambahkan mekanisme <em>identity token</em> (biasanya dalam format JWT) yang berisi informasi tentang subjek (user) serta metadata seperti waktu kedaluwarsa, penerbit, dan lain lain. Dengan kata lain, OIDC memungkinkan siapa (identitas) dan apa yang boleh dilakukan (otorisasi) dikelola secara terpisah namun terintegrasi.</p> </section> <section> <h2>Komponen Utama</h2> <ul> <li><strong>Relying Party (RP)</strong> aplikasi atau layanan yang memerlukan informasi identitas pengguna.</li> <li><strong>OpenID Provider (OP)</strong> penyedia layanan identitas (misalnya Google, Microsoft, atau server khusus).</li> <li><strong>End User</strong> pengguna akhir yang ingin mengakses RP.</li> <li><strong>Authorization Server</strong> dalam konteks OIDC biasanya merupakan bagian dari OP yang mengelola permintaan token.</li> </ul> </section> <section> <h2>Alur Kerja Dasar</h2> <ol> <li>Pengguna mengklik tombol Login dengan Google (atau penyedia lain) pada halaman RP.</li> <li>RP mengarahkan pengguna ke endpoint otorisasi OP dengan parameter seperti <code>client_id</code>, <code>redirect_uri</code>, <code>scope</code>, dan <code>response_type=id_token token</code>.</li> <li>Pengguna masuk (jika belum) dan memberi persetujuan.</li> <li>OP mengirimkan <em>identity token</em> (JWT) dan/atau <em>access token</em> ke <code>redirect_uri</code> RP.</li> <li>RP memvalidasi token (mengecek tanda tangan, iss, aud, exp) dan mengekstrak klaim identitas seperti <code>sub</code>, <code>email</code>, <code>name</code>.</li> <li>RP membuat sesi pengguna dan memberikan akses sesuai kebijakan.</li> </ol> </section> <section> <h2>Klaim (Claims) yang Umum</h2> <p>JWT dalam OIDC berisi sekumpulan klaim yang dapat dipilih melalui <code>scope</code> dan <code>claims</code>. Beberapa klaim standar meliputi:</p> <ul> <li><code>sub</code> identifier unik pengguna pada OP.</li> <li><code>name</code> nama lengkap.</li> <li><code>given_name</code>, <code>family_name</code> nama depan/ belakang.</li> <li><code>email</code> dan <code>email_verified</code>.</li> <li><code>picture</code> URL foto profil.</li> <li><code>locale</code> bahasa/ wilayah.</li> </ul> </section> <section> <h2>Keunggulan OpenID Connect</h2> <ul> <li><strong>Single Sign On</strong> satu login untuk banyak aplikasi.</li> <li><strong>Interoperabilitas</strong> standar terbuka, didukung oleh banyak penyedia.</li> <li><strong>Keamanan Terstandarisasi</strong> penggunaan JWT, TLS, dan token revocation.</li> <li><strong>Skalabilitas</strong> dapat dipakai untuk aplikasi web, mobile, dan API.</li> <li><strong>Pengalaman Pengguna</strong> mengurangi kebutuhan mengingat banyak password.</li> </ul> </section> <section> <h2>Perbandingan dengan OAuth 2.0</h2> <p>OAuth 2.0 hanya menangani otorisasi (apa yang boleh diakses) dan tidak memberi informasi siapa pengguna. OIDC menambahkan lapisan identitas dengan mengeluarkan <em>id_token</em> pada proses yang sama. Karena OIDC dibangun di atas OAuth 2.0, semua flow OAuth (Authorization Code, Implicit, Hybrid) tetap berlaku, namun dengan tambahan parameter <code>openid</code> pada <code>scope</code>.</p> </section> <section> <h2>Implementasi Praktis</h2> <p>Berikut contoh singkat penggunaan OIDC dengan JavaScript (library <code>oidc-client</code>).</p> <pre><code>import { UserManager } from 'oidc-client'; const config = { authority: 'https://accounts.google.com', client_id: 'YOUR_CLIENT_ID', redirect_uri: 'https://yourapp.com/callback', response_type: 'code', scope: 'openid profile email', post_logout_redirect_uri: 'https://yourapp.com/' }; const mgr = new UserManager(config); document.getElementById('login').addEventListener('click', () => { mgr.signinRedirect(); }); mgr.events.addUserLoaded(user => { console.log('User loaded', user.profile); }); </code></pre> <p>Kode di atas menginisialisasi <code>UserManager</code>, mengarahkan pengguna ke Google, dan setelah callback memuat profil pengguna.</p> </section> <section> <h2>Best Practices Keamanan</h2> <ul> <li>Selalu gunakan HTTPS untuk semua endpoint.</li> <li>Verifikasi tanda tangan JWT dengan kunci publik OP (biasanya lewat JWKs endpoint).</li> <li>Validasi klaim <code>iss</code>, <code>aud</code>, dan <code>exp</code>.</li> <li>Gunakan <code>state</code> dan <code>nonce</code> untuk melindungi dari CSRF dan replay attack.</li> <li>Batasi durasi token dan implementasikan revocation bila memungkinkan.</li> </ul> </section> <section> <h2>Kasus Penggunaan Umum</h2> <ul> <li>Aplikasi SaaS yang ingin menyediakan login dengan akun Google, Microsoft, atau Facebook.</li> <li>Portal perusahaan yang mengintegrasikan IdP internal (misalnya Keycloak, Okta).</li> <li>API mobile yang memerlukan identitas pengguna bersama otorisasi resource.</li> <li>Single sign on antar aplikasi internal di lingkungan enterprise.</li> </ul> </section> <section> <h2>Kesimpulan</h2> <p>OpenID Connect menjawab kebutuhan modern akan autentikasi yang aman, mudah, dan dapat diintegrasikan lintas platform. Dengan menggabungkan kekuatan OAuth 2.0 untuk otorisasi dan menambahkan token identitas berbasis JWT, OIDC memberikan solusi lengkap bagi pengembang dan penyedia layanan. Memahami alur kerja, komponen, serta praktik keamanan yang tepat akan memastikan implementasi yang handal dan memberikan pengalaman pengguna yang mulus.</p> </section> <section> <h2>Referensi</h2> <ul> <li><a href="https://openid.net/connect/" target="_blank">OpenID Connect Specification</a></li> <li><a href="https://oauth.net/2/" target="_blank">OAuth 2.0 Framework</a></li> <li><a href="https://developer.okta.com/docs/guides/implement-auth-code-pkce/" target="_blank">Implementasi PKCE dengan OIDC</a></li> </ul> </section> </main>