JWT Token Refresh & Auto-Logout State Engine

30:00

1. Studi Kasus

Dalam aplikasi Single Page Application (SPA), ketika access token kadaluarsa (HTTP 401), sistem harus secara otomatis mencoba memperbarui token via endpoint refresh token sebelum mengulangi request awal. Jika refresh token juga kadaluarsa atau tidak valid, sistem harus melakukan auto-logout dan membersihkan state sesi.

Tugas Anda adalah membuat middleware/handler Express untuk endpoint:

POST /auth/refresh

2. Spesifikasi Input & Output

Request Body:

{
  "refreshToken": "REFRESH_VALID_123"
}

Response Berhasil (HTTP 200):

{
  "accessToken": "NEW_ACCESS_TOKEN_999",
  "expiresIn": 900
}

3. Aturan & Requirement Validasi

  1. Validasi Body: Jika refreshToken tidak diisi → HTTP 400 "Refresh token is required".
  2. Cek Validitas Refresh Token:
    • Token "REFRESH_EXPIRED"HTTP 401 "Refresh token expired. Please login again."
    • Token selain "REFRESH_VALID_123"HTTP 403 "Invalid refresh token".
  3. Generate Token Baru: Jika token valid, kembalikan HTTP 200 dengan token baru "NEW_ACCESS_TOKEN_" + Date.now().

4. Pertanyaan Bonus Konseptual 💡

Mitigasi Serangan XSS vs CSRF pada Penyimpanan JWT Di bagian komentar kode solusi Anda, jelaskan:

  • Risiko menyimpan JWT di localStorage / sessionStorage (Vulnerable terhadap XSS).
  • Keunggulan HttpOnly, Secure, dan SameSite=Strict Cookie untuk mencegah CSRF & XSS.
solution.js
Loading...
Local Test Console