Access Token vs Refresh Token Architecture

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

ParameterAccess TokenRefresh Token
Masa Aktif (Lifespan)Sangat singkat (biasanya 5 hingga 15 menit)Panjang (bisa berhari-hari, minggu, atau bulan)
Penyimpanan KlienMemori volatile (RAM / JavaScript memory) untuk keamanan dari XSSPenyimpanan aman (HttpOnly, Secure Cookies)
Frekuensi PenggunaanDikirim pada setiap permintaan (request) ke APIHanya dikirim saat token akses kedaluwarsa ke endpoint otorisasi
Dampak Jika KompromiPenyerang dapat mengakses API selama token masih aktifPenyerang 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.