OAuth 2.0, OpenID Connect, SAML, dan authorization code flow adalah protokol yang menggerakkan modern authentication di web dan mobile apps

Setelah di episode 4 kita membahas Entra ID & cloud directory, pada episode ini kita masuk ke jantung protokol modern authentication: OAuth 2.0, OpenID Connect (OIDC), dan SAML. Ketiga protokol ini adalah bahasa yang digunakan oleh aplikasi dan identity providers untuk berkomunikasi tentang authentication dan authorization.
Mengapa memahami protokol penting? Karena IAM Engineer harus bisa mengintegrasikan aplikasi ke IdP, mendiagnosis masalah SSO, dan memilih protokol yang tepat untuk setiap use case. Tanpa pemahaman protokol, kalian hanya bisa mengikuti dokumentasi tanpa memahami apa yang sebenarnya terjadi.
OAuth 2.0 adalah authorization framework — bukan authentication protocol. Ia memungkinkan user memberikan akses terbatas ke resource tanpa membagikan credentials.
| Komponen | Fungsi |
|---|---|
| Resource Owner | User yang memiliki akses |
| Client | Aplikasi yang meminta akses |
| Authorization Server | Menge issue token |
| Resource Server | API yang menyimpan resource |
Flow yang paling umum untuk web apps:
| Token | Fungsi | Lifetime |
|---|---|---|
| Access Token | Mengakses resource | Pendek (5-60 menit) |
| Refresh Token | Mendapatkan access token baru | Panjang (hari/bulan) |
| ID Token | Mengidentifikasi user (OIDC) | Pendek |
curl -X POST https://auth.example.com/token \
-d "grant_type=authorization_code" \
-d "code=AUTH_CODE_HERE" \
-d "client_id=app123" \
-d "client_secret=secret456" \
-d "redirect_uri=https://app.example.com/callback"OIDC menambahkan layer identity di atas OAuth 2.0:
ID Token berisi informasi user:
{
"sub": "user123",
"name": "Alice Developer",
"email": "alice@company.com",
"iss": "https://auth.example.com",
"aud": "app123",
"exp": 1692000000
}| Endpoint | Fungsi |
|---|---|
/authorize | Memulai authorization flow |
/token | Menukar code untuk token |
/userinfo | Mendapatkan informasi user |
/jwks | Public keys untuk verifikasi token |
SAML (Security Assertion Markup Language) adalah protokol berbasis XML untuk SSO. Berbeda dari OAuth/OIDC yang berbasis JSON, SAML menggunakan XML assertions.
| Aspek | SAML | OIDC |
|---|---|---|
| Format | XML | JSON/JWT |
| Complexity | Tinggi | Rendah |
| Mobile support | Kurang | Baik |
| Adoption legacy | Tinggi | Menanjak |
| Modern apps | Kurang digunakan | Standar |
Tip
Untuk aplikasi baru, gunakan OIDC. SAML masih relevan untuk legacy enterprise apps dan integrasi dengan IdP lama. Sebagai IAM Engineer, kalian harus menguasai keduanya.
| Use Case | Protokol Rekomendasi |
|---|---|
| Web app modern | OIDC (Authorization Code + PKCE) |
| Mobile app | OIDC (Authorization Code + PKCE) |
| API authorization | OAuth 2.0 (Client Credentials) |
| Enterprise SSO legacy | SAML |
| Machine-to-machine | OAuth 2.0 (Client Credentials) |
Inti yang harus dibawa pulang:
Di episode 6 selanjutnya kita akan membahas SSO & federation — arsitektur SSO, trust setup, dan deployment federation. Siapkan infrastruktur SSO kalian!