Tôi muốn triển khai xác thực dựa trên JWT cho API REST mới của chúng tôi. Nhưng vì hết hạn được đặt trong mã thông báo, có thể tự động kéo dài nó không? Tôi không muốn người dùng cần đăng nhập sau mỗi X phút nếu họ chủ động sử dụng ứng dụng trong khoảng thời gian đó. Đó sẽ là một thất bại lớn của UX.
Nhưng việc kéo dài thời gian hết hạn sẽ tạo ra một mã thông báo mới (và mã thông báo cũ vẫn còn hiệu lực cho đến khi hết hạn). Và việc tạo mã thông báo mới sau mỗi yêu cầu nghe có vẻ ngớ ngẩn với tôi. Âm thanh giống như một vấn đề bảo mật khi có nhiều hơn một mã thông báo hợp lệ cùng một lúc. Tất nhiên tôi có thể vô hiệu hóa cái cũ đã sử dụng bằng danh sách đen nhưng tôi sẽ cần lưu trữ mã thông báo. Và một trong những lợi ích của JWT là không lưu trữ.
Tôi tìm thấy cách Auth0 giải quyết nó. Họ không chỉ sử dụng mã thông báo JWT mà còn sử dụng mã thông báo làm mới: https://docs.auth0.com/refresh-token
Nhưng một lần nữa, để thực hiện điều này (không có Auth0) tôi cần lưu trữ mã thông báo làm mới và duy trì hết hạn. Lợi ích thực sự sau đó là gì? Tại sao không chỉ có một mã thông báo (không phải JWT) và giữ hết hạn trên máy chủ?
Có những lựa chọn khác? Là sử dụng JWT không phù hợp cho kịch bản này?