Arsitektur autentikasi modern berbasis token memisahkan kredensial pengguna menjadi dua komponen utama: Access Token dan Refresh Token. Access token berfungsi sebagai kunci akses singkat untuk sumber daya API, sementara refresh token bertugas mendapatkan token akses baru tanpa mengharuskan pengguna memasukkan ulang kredensial mereka.
Dalam implementasi praktis seperti layanan autentikasi pihak ketiga (misalnya mekanisme 'Masuk dengan Google'), pemahaman mengenai siklus hidup token sangat krusial. Seperti dicatat dalam analisis teknis terkait pengelolaan sesi, mencopot atau memutuskan sambungan aplikasi dari akun terkadang tidak serta-merta mencabut seluruh akses aktif secara instan jika token yang ada masih valid dalam masa berlakunya.
Matriks Perbandingan Access Token vs Refresh Token
| Parameter | Access Token | Refresh Token |
|---|---|---|
| Masa Aktif (Lifespan) | Sangat singkat (biasanya 5 hingga 15 menit) | Panjang (bisa berhari-hari, minggu, atau bulan) |
| Penyimpanan Klien | Memori volatile (RAM / JavaScript memory) untuk keamanan dari XSS | Penyimpanan aman (HttpOnly, Secure Cookies) |
| Frekuensi Penggunaan | Dikirim pada setiap permintaan (request) ke API | Hanya dikirim saat token akses kedaluwarsa ke endpoint otorisasi |
| Dampak Jika Kompromi | Penyerang dapat mengakses API selama token masih aktif | Penyerang dapat terus menerus menghasilkan access token baru |
Alur Kerja Arsitektur Token
Proses autentikasi dimulai saat pengguna berhasil masuk menggunakan kredensial yang valid. Server otorisasi kemudian menerbitkan sepasang token: access token dan refresh token. Klien menyimpan access token di memori aplikasi dan menempatkan refresh token di penyimpanan yang lebih aman seperti HttpOnly Cookie untuk mencegah eksploitasi celah Cross-Site Scripting (XSS).
Ketika access token kedaluwarsa, klien mengirimkan refresh token ke server otorisasi. Server memvalidasi refresh token tersebut terhadap database atau daftar pencabutan (revocation list). Jika valid, server mengeluarkan access token yang baru. Jika refresh token telah dicabut—misalnya pengguna telah mencabut izin aplikasi dari pengaturan akun—maka proses pembaruan ditolak dan pengguna harus melakukan autentikasi ulang.
Keamanan dan Manajemen Pencabutan Akses
Salah satu tantangan utama dalam arsitektur token adalah penanganan pencabutan (revocation). Karena access token bersifat stateless dan tidak selalu diverifikasi ke database pada setiap request demi performa, sistem harus mengandalkan masa kedaluwarsa yang pendek.
Di sisi lain, refresh token bersifat stateful atau memiliki mekanisme pelacakan di sisi server. Ketika sebuah aplikasi dicabut aksesnya oleh pengguna, server harus memastikan bahwa refresh token yang terkait ditandai tidak valid (revoked). Tanpa mekanisme pencabutan refresh token yang tepat, sesi yang tidak diinginkan dapat terus berjalan meskipun pengguna mengira mereka telah memutus hubungan aplikasi tersebut.