JWT (JSON Web Token) là gì?

Khái niệm

JSON Web Token, là một giao thức đảm báo an toàn thông tin qua web gồm một đoạn ký tự mã hóa. Đoạn ký tự này gồm 3 phần: header.playload.signature

Ví dụ:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJpc3MiOiJ0b3B0YWwuY29tIiwiZXhwIjoxNDI2NDIwODAwLCJodHRwOi8vdG9wdGFsLmNvbS9qd3RfY2xhaW1zL2lzX2FkbWluIjp0cnVlLCJjb21wYW55IjoiVG9wdGFsIiwiYXdlc29tZSI6dHJ1ZX0.
yRQYnWzskCZUxPwaQupWkiUzKELZ49eM7oWxAQK_ZXw

jwt-example

Kịch bản phổ biến sử dụng JWT

jwt-how-to

  • Truy cập không xác thực sẽ báo lỗi
  • Yêu cầu xác thực (ví dụ kèm acc/pass), server sẽ xác thực và mã hóa thông tin cần thiết cho lần giải mã sau, rồi trả về token (ở đây là JSON Web Token)
  • Truy cập xác thực sẽ luôn kèm token trong header, hoặc phương thức POST, hoặc trên URL. Phía server sẽ giải mã JWT token nhận được và kiểm tra những yêu cầu như user, role, permission (tùy trường hợp) có trong payload của JWT.

Nhận xét

Rất đơn giản, đây là một giải pháp bảo mật với 1 bên (hoặc nhiều bên) mã hóa JWT (không nhất thiết là server mã hóa).

JWT có ưu điểm là mã hóa được nhiều thông tin. JWT gửi cho client mà không cần lưu phía server, nên không như một số giải pháp cũ là lưu session phía server và dùng 1 key gửi client, sau đó nhận key và kiểm tra session để xác thực và quyền.

Một trong những điểm chú ý khi sử dụng JWT:

  • Lưu thông tin cần thiết, để khi giải mã lại, thông tin đó đủ để xác thực
  • Lưu thông tin hết hạn cho JWT trong payload, giúp loại bỏ những request quá hạn

Tìm hiểu thêm:

https://jwt.io/

Leave a Reply

Your email address will not be published. Required fields are marked *