Hồi mới tìm hiểu jwt, cũng thấy nó màu hồng lắm, kiểu tự self verify thì không cần phải IO check chỗ khác nữa. Nhưng sau gặp nhiều case mới thấy không như là mơ.
Vì self verify thì chỉ có check signature với kiểm tra expire time. Vậy làm thế nào để invalid 1 token?
Ví dụ như mobile dùng jwt để authen vào server, vậy giờ server làm sao để force logout token đó đi? Giải pháp chấp vá là giảm expire time xuống, khi đó thì sẽ luôn có 1 khoảng delay time, mà như vậy với case end user thì quá fail. Giải pháp thứ 2 là vẫn phải lưu cái token đó vào chỗ nào đó để check
. Chỉ có điều là thay vì thằng app business phải tự code việc lưu token vào db rồi code đoạn check, thì giờ nó đẩy việc này cho mấy thằng gateway hoặc thằng authen server (không phải việc của coder ae mình). Lúc này nó ra đời khái niệm là "introspection token", nôm na là vẫn phải IO ra đâu đó để check.
Cái lợi ích khác của jwt ít người nói, đó là "claim value", tức là thông tin user có trong token luôn, claim token ra để lấy :3, nhưng cái dở của jwt đó là phần payload nó là encode (nhắc lại là encode chứ ko phải encrypt). Bọn nó mang 1 tư tưởng là "tao cho mày xem thông tin của tao đó, nhưng mày có xem được, cũng chả fake được đâu". Chính cái tư tưởng này mà có thằng PASETO ra đời, đáng tiếc cho PASETO là hồi mình nghiên cứu nó thì nó còn khá mới, chưa phổ biến.