JSON Web Token Là Gì? Tìm Hiểu Chi Tiết Về JSON Web Token

Đảm bảo bảo mật cho các ứng dụng và website là điều vô cùng quan trọng đối với các doanh nghiệp và cá nhân sở hữu các sản phẩm này. Vậy bạn đã từng nghe qua thuật ngữ JSON Web Token (JWT), đây là một phương thức bảo mật mới nổi nhưng rất an toàn và dễ thực hiện. Hãy cùng chúng tôi tìm hiểu chi tiết về JSON Web Token trong bài viết dưới đây nhé!

JSON Web Token (JWT) là gì?

JSON Web Token (JWT) là một tiêu chuẩn chuẩn mở (RFC 7519) dùng để xác minh tính bảo mật của thông tin trao đổi giữa các bên, thường là Client và Server, bằng cách biểu diễn thông tin này dưới dạng JSON object. Điều đặc biệt là thông tin trong JWT có thể được xác minh và tin cậy vì nó được ký điện tử bằng cách sử dụng một secret (với thuật toán HMAC) hoặc cặp public/private key dựa trên các chuẩn như RSA hoặc ECDSA.

JSON Web Token

Ưu điểm của JWT (JSON Web Token)

Một số ưu điểm nổi bật của jwt có thể kể đến như:

  • Tính nhỏ gọn: So với XML, JWT là một lựa chọn vượt trội vì nó nhỏ gọn và tiết kiệm không gian khi mã hóa dự liệu hơn so với SAML, đặc biệt phù hợp cho lập trình viên làm việc trong môi trường HTTP và HTML.
  • Tính bảo mật cao: JWT sử dụng cặp khóa Public Key/Private Key hoặc mã bí mật kết hợp với thuật toán HMAC để ký, đảm bảo mức độ bảo mật cao hơn so với SAML.
  • Tính phổ biến: JWT được sử dụng rộng rãi trong hầu hết các ngôn ngữ lập trình hiện nay, nhờ việc ánh xạ trực tiếp đến các đối tượng. Ngược lại, XML không tự nhiên ánh xạ dữ liệu nên quá trình làm việc với JWT sẽ dễ dàng hơn.
  • Dễ quản lý: JWT phù hợp cho các ứng dụng quy mô internet và dễ dàng xử lý trên hầu hết các thiết bị cá nhân, đặc biệt là các thiết bị di động.

>> Tham khảo thêm: Dịch vụ thiết kế web token uy tín, giá rẻ và chuyên nghiệp

JWT có tính bảo mật cao nên được sử dụng phổ biến

Cấu trúc của một JSON Web Token

Một JWT được chia thành 3 phần khác nhau ngăn cách bằng dấu “.”, cụ thể là:

  • Phần HEADER: Chứa thông tin về thuật toán mã hóa sử dụng, ví dụ: HS256, HS512,… và loại của token.
  • Phần PAYLOAD: Chứa dữ liệu
  • Phần VERIFY SIGNATURE: Chứa chữ ký xác minh tính bảo mật của JWT

Phần header

HEADER bao gồm hai thành phần quan trọng:

  • “typ” (Type) – Loại token (thường mặc định là JWT), cho biết rằng đây là một token JWT
  • “alg” (Algorithm) – Thuật toán được sử dụng để mã hóa token, ví dụ: HMAC SHA256 (HS256) hoặc RSA

Phần Payload

Payload là phần chứa các nội dung thông tin (claim) như: mô tả về một thực thể (người dùng) hoặc thông tin bổ sung cho phần header. Thông tin trong Payload được chia thành ba loại: reserved, public và private.

Reserved: Đây là những thông tin được chỉ định trong IANA JSON Web Token Claims registry và chúng không bắt buộc. Vì vậy tùy vào mỗi ứng dụng cụ thể bạn có thể thêm những yêu cầu cần thiết.

  • “iss” (issuer): Tổ chức hoặc thực thể phát hành token (không bắt buộc).
  • “sub” (subject): Chủ đề của token (không bắt buộc).
  • “aud” (audience): Đối tượng sử dụng token (không bắt buộc).
  • “exp” (expiration time): Thời điểm mà token sẽ hết hạn (không bắt buộc).
  • “iat” (issued at): Thời điểm token được phát hành, được tính theo thời gian UNIX.
  • “jti” (JWT ID): Mã xác định duy nhất cho JWT.

Public : Các thông tin trong phần này có thể được xác định theo mong muốn của người sử dụng JWT. Tuy nhiên, để tránh bị xung đột và trùng lặp chúng cần phải được đăng ký trong IANA JSON Web Token Registry hoặc sử dụng URI có chứa không gian tên không trùng lặp.

Private:Thông tin bổ sung được sử dụng để chuyển giữa các client

>>>> Tìm hiểu Tiêu chuẩn token là gì?Chia sẻ chi tiết tiêu chuẩn token

Signature

Đây là phần cuối cùng của JSON Web Token, chứa chữ ký được sử dụng để xác minh tính toàn vẹn của token. Chữ ký này được tạo bằng cách áp dụng thuật toán mã hóa (HMAC, RSA, hoặc ECDSA) lên header và payload cùng với một khóa bí mật (đối với HMAC) hoặc khóa riêng tư (đối với RSA hoặc ECDSA). Chữ ký này đảm bảo rằng thông tin trong JWT không bị thay đổi khi truyền qua mạng và chỉ có người đã tạo JWT mới có thể tạo ra chữ ký hợp lệ để xác minh token.

Cấu trúc của JSON Web Token

Cách thức hoạt động của JSON Web Token

Bước 1: User sẽ đăng nhập bằng cách cung cấp tên đăng nhập và mật khẩu hoặc sử dụng tài khoản mạng xã hội và gửi thông tin đăng nhập đến Authentication Server (Máy chủ xác thực).

Bước 2: Authentication Server tiếp nhận thông tin mà người dùng gửi để xác thực. Trong trường hợp xác thực thành công, Authentication Server tạo một JSON Web Token (JWT) và gửi nó lại cho người dùng thông qua response.

Bước 3: Người dùng nhận JWT từ Authentication Server và sử dụng nó như một “chìa khóa” để thực hiện các yêu cầu tiếp theo đối với Application Server.

Bước 4: Trước khi Application Server thực hiện bất kỳ yêu cầu nào từ phía người dùng, hệ thống sẽ verify JWT được gửi lên để kiểm tra tính hợp lệ. Nếu JWT phù hợp sẽ tiến hành thực hiện yêu cầu, nếu không hợp lệ yêu cầu sẽ bị từ chối.

>>>Xem thêm: TRC20 là gì? Tổng quan thông tin và cách nhận diện TRC20

Quy trình hoạt động của JSON Web Token

Khi nào nên sử dụng JSON Web Token

  • Authentication (xác thực): Đây là trường hợp phổ biến nhất khi sử dụng JWT. Khi người dùng đăng nhập vào hệ thống, các yêu cầu tiếp theo của người dùng sẽ chứa mã JWT bổ sung, cho phép người dùng được truy cập vào URL, service và resource mà token cho phép. Phương pháp này không bị ảnh hưởng bởi Cross-Origin Resource Sharing (CORS) vì nó không sử dụng cookie.
  • Truyền thông tin: Sử dụng JSON Web Token để truyền thông tin giữa các thành viên là một phương pháp an toàn, phần chữ ký trong JWT cho phép bạn xác minh và nhận dạng người gửi, dễ dàng phát hiện nếu có sự giả mạo. Ngoài ra, cấu trúc JWT giúp bạn hiểu liệu nội dung có chính xác hay không.

Với những lợi ích và ưu điểm đã được chứng minh, ngày nay SON Web Token đã trở thành sự lựa chọn hàng đầu của các lập trình viên trong việc nâng cao tính bảo mật của các trang web, ứng dụng và dịch vụ công nghệ thông tin.  Chúng tôi tin rằng chỉ những thông tin cơ bản trong bài viết này cũng đủ giúp bạn hiểu rõ JWT là gì và tại sao nên sử dụng nó. Để đạt được thành công lớn hơn trong thế giới lập trình và bảo mật dữ liệu, đừng bỏ qua những công cụ hữu ích như JWT bạn nhé!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *