Pengantar
Di era digital yang semakin terhubung, autentikasi dan otorisasi menjadi dua aspek krusial yang harus dikelola dengan aman dan efisien. OpenID Connect (OIDC) muncul sebagai standar modern yang memudahkan proses login satu kali (single sign on) sekaligus memberikan data profil pengguna kepada aplikasi yang memerlukannya.
Definisi OpenID Connect
OpenID Connect adalah lapisan identitas yang dibangun di atas protokol OAuth 2.0. Ia menambahkan mekanisme identity token (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.
Komponen Utama
- Relying Party (RP) aplikasi atau layanan yang memerlukan informasi identitas pengguna.
- OpenID Provider (OP) penyedia layanan identitas (misalnya Google, Microsoft, atau server khusus).
- End User pengguna akhir yang ingin mengakses RP.
- Authorization Server dalam konteks OIDC biasanya merupakan bagian dari OP yang mengelola permintaan token.
Alur Kerja Dasar
- Pengguna mengklik tombol Login dengan Google (atau penyedia lain) pada halaman RP.
- RP mengarahkan pengguna ke endpoint otorisasi OP dengan parameter seperti
client_id,redirect_uri,scope, danresponse_type=id_token token. - Pengguna masuk (jika belum) dan memberi persetujuan.
- OP mengirimkan identity token (JWT) dan/atau access token ke
redirect_uriRP. - RP memvalidasi token (mengecek tanda tangan, iss, aud, exp) dan mengekstrak klaim identitas seperti
sub,email,name. - RP membuat sesi pengguna dan memberikan akses sesuai kebijakan.
Klaim (Claims) yang Umum
JWT dalam OIDC berisi sekumpulan klaim yang dapat dipilih melalui scope dan claims. Beberapa klaim standar meliputi:
subidentifier unik pengguna pada OP.namenama lengkap.given_name,family_namenama depan/ belakang.emaildanemail_verified.pictureURL foto profil.localebahasa/ wilayah.
Keunggulan OpenID Connect
- Single Sign On satu login untuk banyak aplikasi.
- Interoperabilitas standar terbuka, didukung oleh banyak penyedia.
- Keamanan Terstandarisasi penggunaan JWT, TLS, dan token revocation.
- Skalabilitas dapat dipakai untuk aplikasi web, mobile, dan API.
- Pengalaman Pengguna mengurangi kebutuhan mengingat banyak password.
Perbandingan dengan OAuth 2.0
OAuth 2.0 hanya menangani otorisasi (apa yang boleh diakses) dan tidak memberi informasi siapa pengguna. OIDC menambahkan lapisan identitas dengan mengeluarkan id_token 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 openid pada scope.
Implementasi Praktis
Berikut contoh singkat penggunaan OIDC dengan JavaScript (library oidc-client).
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); }); Kode di atas menginisialisasi UserManager, mengarahkan pengguna ke Google, dan setelah callback memuat profil pengguna.
Best Practices Keamanan
- Selalu gunakan HTTPS untuk semua endpoint.
- Verifikasi tanda tangan JWT dengan kunci publik OP (biasanya lewat JWKs endpoint).
- Validasi klaim
iss,aud, danexp. - Gunakan
statedannonceuntuk melindungi dari CSRF dan replay attack. - Batasi durasi token dan implementasikan revocation bila memungkinkan.
Kasus Penggunaan Umum
- Aplikasi SaaS yang ingin menyediakan login dengan akun Google, Microsoft, atau Facebook.
- Portal perusahaan yang mengintegrasikan IdP internal (misalnya Keycloak, Okta).
- API mobile yang memerlukan identitas pengguna bersama otorisasi resource.
- Single sign on antar aplikasi internal di lingkungan enterprise.
Kesimpulan
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.