Autentikasi merupakan fondasi utama dalam sistem keamanan aplikasi modern. Tanpa mekanisme autentikasi yang baik, siapa pun bisa mengakses data atau layanan tanpa izin. Namun, tidak semua metode autentikasi diciptakan sama β masing-masing memiliki karakteristik, tingkat keamanan, dan skenario penggunaan yang berbeda.
Dalam artikel ini, kita akan membahas beberapa metode autentikasi paling umum beserta alur (flow) kerjanya, mulai dari yang sederhana hingga yang digunakan di sistem enterprise berskala besar.
1. Basic Authentication
π Deskripsi
Basic Auth adalah metode autentikasi paling sederhana di mana client mengirimkan pasangan username dan password dalam header HTTP. Biasanya dikodekan dalam format Base64.
βοΈ Flow
- Client mengirimkan header:
Authorization: Basic <base64(username:password)>
- Server memverifikasi kredensial.
- Jika valid, server memberikan akses ke resource.
β οΈ Kelemahan
Metode ini tidak aman tanpa HTTPS karena kredensial dikirim setiap kali request. Biasanya hanya digunakan pada sistem internal atau untuk testing.
2. Session-Based Authentication
π Deskripsi
Metode klasik yang masih banyak digunakan di aplikasi web tradisional. Server menyimpan session setelah user berhasil login.
βοΈ Flow
- User login dengan username dan password.
- Server membuat session ID dan menyimpannya di memori atau database.
- Session ID dikirim ke client melalui cookie.
- Client otomatis mengirim cookie tersebut pada setiap request berikutnya.
β Kelebihan
- Mudah dikontrol oleh server (misalnya untuk logout atau expired session).
- Cocok untuk aplikasi monolitik berbasis server-rendered pages.
β οΈ Kekurangan
- Tidak efisien untuk sistem berskala besar (karena server harus menyimpan session).
- Tidak ideal untuk API atau aplikasi terdistribusi.
3. Token-Based Authentication (JWT)
π Deskripsi
Berbeda dengan session, metode ini tidak menyimpan data di server. Setelah login, server mengembalikan token (biasanya JWT β JSON Web Token) yang berisi informasi user dan waktu kedaluwarsa.
βοΈ Flow
- Client login dan mengirim kredensial.
- Server memverifikasi, lalu mengembalikan JWT.
- Client menyimpan token (biasanya di localStorage atau cookie).
- Setiap request berikutnya dikirim dengan header:
Authorization: Bearer <token>
- Server memverifikasi token tanpa perlu menyimpan session.
β Kelebihan
- Bersifat stateless, cocok untuk API modern dan aplikasi SPA (Single Page Application).
- Skalabel dan efisien.
β οΈ Kekurangan
- Token tidak bisa dicabut sebelum masa berlakunya habis (kecuali ada mekanisme blacklist).
- Keamanan sangat bergantung pada cara penyimpanan token di sisi client.
4. API Key Authentication
π Deskripsi
Metode autentikasi sederhana berbasis kunci unik yang diberikan kepada setiap client atau aplikasi.
βοΈ Flow
- Client menyertakan API key di header atau query string:
Authorization: ApiKey <key>
- Server memverifikasi key dan memberikan akses.
β Kelebihan
- Implementasi mudah dan cepat.
- Cocok untuk komunikasi antar layanan (machine-to-machine).
β οΈ Kekurangan
- Tidak mengidentifikasi user, hanya aplikasi.
- Jika key bocor, siapa pun bisa mengakses API.
5. OAuth 2.0
π Deskripsi
OAuth 2.0 adalah protokol standar industri untuk delegated authorization β artinya pengguna dapat memberi izin pada aplikasi pihak ketiga tanpa harus membagikan kredensial.
βοΈ Flow (Authorization Code Grant)
- Aplikasi mengarahkan user ke halaman login penyedia otorisasi (misalnya Google).
- User login dan memberikan izin.
- Authorization server mengembalikan authorization code.
- Aplikasi menukar code tersebut dengan access token.
- Token digunakan untuk mengakses resource API.
β Kelebihan
- Aman untuk login pihak ketiga.
- Tidak ada pertukaran password antar sistem.
β οΈ Kekurangan
- Implementasinya cukup kompleks.
- Perlu pengamanan ekstra terhadap redirect URI dan token leakage.
6. OpenID Connect (OIDC)
π Deskripsi
OpenID Connect adalah lapisan identitas yang dibangun di atas OAuth 2.0. Selain access token, OIDC juga menyediakan ID Token yang berisi informasi user.
βοΈ Flow
Hampir sama dengan OAuth 2.0, tetapi authorization server juga mengirimkan ID Token dalam format JWT.
β Kelebihan
- Mendukung Single Sign-On (SSO).
- Banyak digunakan di sistem enterprise (misalnya Google Sign-In, Azure AD, Okta).
7. Mutual TLS (mTLS)
π Deskripsi
Metode autentikasi berbasis sertifikat di mana client dan server saling memverifikasi identitas menggunakan sertifikat TLS.
βοΈ Flow
- Server mengirim sertifikat ke client.
- Client juga mengirim sertifikat balik ke server.
- Kedua pihak memverifikasi sertifikat masing-masing.
- Jika valid, koneksi aman dibentuk.
β Kelebihan
- Keamanan sangat tinggi.
- Cocok untuk komunikasi antar microservices di lingkungan enterprise.
β οΈ Kekurangan
- Manajemen sertifikat kompleks dan sulit diotomasi.
- Tidak cocok untuk aplikasi publik biasa.
π Perbandingan Singkat
Metode | Cocok Untuk | Keamanan | Sifat | Kompleksitas |
---|---|---|---|---|
Basic Auth | API internal, testing | Rendah | Stateless | Rendah |
Session | Web klasik | Sedang | Stateful | Rendah |
JWT | SPA, Mobile API | Tinggi | Stateless | Sedang |
API Key | Machine-to-machine | Sedang | Stateless | Rendah |
OAuth2 / OIDC | SSO, Third-party login | Tinggi | Stateless | Tinggi |
mTLS | Microservices | Sangat tinggi | Stateless | Tinggi |
π§ Kesimpulan
Tidak ada satu metode autentikasi yang cocok untuk semua kasus.
- Untuk aplikasi web klasik, session-based auth masih relevan.
- Untuk API dan SPA, JWT lebih efisien dan skalabel.
- Untuk integrasi pihak ketiga atau SSO, OAuth2/OIDC menjadi pilihan terbaik.
- Dan untuk komunikasi antar layanan sensitif, mTLS memberikan tingkat keamanan tertinggi.
Pada akhirnya, pemilihan metode autentikasi harus mempertimbangkan tingkat keamanan yang dibutuhkan, kompleksitas sistem, serta konteks penggunaan.
Top comments (0)