JWT là gì ? Nó hoạt động ra sao ? Khi nào nên sử dụng JWT ? @[email protected]… Qua bài bài viết này mình sẽ giúp các bạn hiểu nhanh về nó ,cùng bắt đầu tìm hiểu nào .
jwt16304761538232.jpeg
JWT là gì ?
JWT (JSON Web Token) là một chuẩn mở (RFC 7519) định nghĩa một cách ngắn gọn , khép kín để truyền thông tin một cách an toàn giữa Client-Server dưới dạng đối tượng JSON.
Cấu tạo của JWT như thế nào ?
Trước khi đi vào lý thuyết chúng ta có một ví dụ sau :
eyJbGci3OiJIUzI1NiIsInR5cKI6IkpXfCJ5.eyJleHAiOjEz2DY4OTkxMzEsImlzcyI6ImppcmE6MTU0ODk3OTUiLCJxc2giOiI4MDYzZmY3K2ExZTUxZGY3YmM5MGM4YWI2KDBmNjIwN2L0OTFjZjZkYWQ3YzY2ZKE3OTdiNDYxNGI3MTkyMmU5IiwiaWF0IjoxMzg2ODk4OTUxfQ.uKqU9dTB6gKwG6jQCuXFAiMNdfNRw98Hw_IWuA5MaMoNhìn có vẻ khá phức tạp nhưng thực ra chuỗi JSON Web Token được chia làm 3 phần :
Header Payload Signature (chữ ký )Và được ngăn cách bởi dấu “ . “ .
Như vậy theo lý thuyết trên ta có cấu trúc của JWT:
header.payload.signature
Khi nhìn lại ví dụ trên ta có thể phân biệt rõ các phần của Token này thành 3 Object: Header ,Payload, Signature , dưới định dạng JSON được encode base64 ( mình sẽ giải thích chi tiết sau phần Signature)
Header
Header là phần chứa kiểu dữ liệu và thuật toán để mã hóa ra chuỗi JWT.
Chúng ta có ví dụ sau :
Với ví dụ trên ta có thể thấy :
“typ” ( type) :cho chúng ta thấy đây là một JWT , “alg” (algorithm) :thuật toán mã hóa ra chuỗi là HS256
Payload
Phần này chứa các thông tin người code muốn đặt trong chuỗi Token .
Ví dụ :
Signature
Signature hay còn gọi là phần chữ ký , được tạo ra bằng cách mã hóa phần header và payload kèm theo một chuỗi khóa bí mật (Secret) .
Chúng ta có ví dụ sau :
base64UrlEncode :là Thuật toán mã hóa header và Payload
Quay lại với ví dụ ở đầu bài ta dễ dang có thể thấy :
Header :
eyJbGci3OiJIUzI1NiIsInR5cKI6IkpXfCJ5Payload :
eyJleHAiOjEz2DY4OTkxMzEsImlzcyI6ImppcmE6MTU0ODk3OTUiLCJxc2giOiI4MDYzZmY3K2ExZTUxZGY3YmM5MGM4YWI2KDBmNjIwN2L0OTFjZjZkYWQ3YzY2ZKE3OTdiNDYxNGI3MTkyMmU5IiwiaWF0IjoxMzg2ODk4OTUxfQSignature :
uKqU9dTB6gKwG6jQCuXFAiMNdfNRw98Hw_IWuA5MaMoKhi nào ta nên sử dụng JWT ?
Authentication: Đây là trường hợp phổ biến nhất thường sử dụng JWT. Khi người dùng đã đăng nhập vào hệ thống thì những request tiếp theo từ phía người dùng sẽ chứa thêm mã JWT. Điều này cho phép người dùng được cấp quyền truy cập vào các url, service, và resource mà mã Token đó cho phép. Phương pháp này không bị ảnh hưởng bởi Cross-Origin Resource Sharing (CORS) do nó không sử dụng cookie.
Trao đổi thông tin: JSON Web Token là 1 cách thức khá hay để truyền thông tin an toàn giữa các thành viên với nhau, nhờ vào phần signature của nó. Phía người nhận có thể biết được người gửi là ai thông qua phần signature. Và chữ ký được tạo ra bằng việc kết hợp cả phần header, payload lại nên thông qua đó ta có thể xác nhận được chữ ký có bị giả mạo hay không.
Kết Luận
Hy vọng qua bài viết này các bạn sẽ hiểu them phần nào về JSON Web Token , cảm ơn các bạn đã theo dõi bài viết của mình .