JWT sering dipilih untuk autentikasi API karena ringkas dan mudah digunakan di frontend maupun backend. Namun, JWT yang tidak dikelola dengan baik bisa menjadi celah keamanan. Rotasi token membantu membatasi risiko jika token bocor, sehingga dampaknya tidak berkepanjangan. Dengan desain yang tepat, API lebih aman tanpa mengorbankan UX.
Struktur access dan refresh token
Access token memiliki masa berlaku singkat, misalnya 15 menit. Refresh token memiliki masa berlaku lebih panjang dan digunakan untuk mendapatkan access token baru. Kombinasi ini membuat token jangka panjang tidak pernah dipakai untuk akses langsung ke API.
- Simpan access token di memori aplikasi jika memungkinkan.
- Simpan refresh token di cookie httpOnly untuk mencegah XSS.
- Batasi scope access token agar tidak terlalu luas.
Rotasi token dan revokasi
Setiap kali refresh token digunakan, berikan refresh token baru dan batalkan yang lama. Ini mencegah token dicuri digunakan berulang. Simpan daftar refresh token aktif agar bisa dicabut jika ada aktivitas mencurigakan.
Gunakan fingerprint perangkat atau metadata lokasi untuk mendeteksi penyalahgunaan. Jika ada pola aneh, lakukan revoke dan minta login ulang.
Praktik keamanan tambahan
Gunakan algoritma signature yang kuat dan simpan secret dengan aman. Validasi issuer, audience, dan waktu kedaluwarsa di setiap request. Tambahkan rate limiting pada endpoint refresh untuk mencegah brute force.
Dengan JWT dan rotasi token yang benar, autentikasi API menjadi lebih aman, menjaga data pengguna, dan meningkatkan kepercayaan pada aplikasi web.