Access token sống ngắn; khi nó hết hạn, client dùng refresh token (sống lâu hơn) gọi endpoint /token để lấy access token mới — không bắt người dùng đăng nhập lại. Đó là "silent refresh".
Refresh token rotation: mỗi lần refresh, server cấp refresh token MỚI và vô hiệu cái cũ. Nếu một refresh token cũ bị dùng lại (dấu hiệu bị đánh cắp/replay), server phát hiện và có thể thu hồi cả chuỗi token của phiên đó.
Refresh token nên nằm trong cookie HttpOnly; access token mới đưa về in-memory để dùng cho các request kế tiếp.