CoderTools

Bộ Mã Hóa/Giải Mã JWT

Giải mã, xác minh và tạo token JWT một cách an toàn

JWT Đã Giải Mã

Tiêu Đề


                        

Dữ Liệu


                        

Chữ Ký


                        

JWT là gì?

JSON Web Token (JWT)

JWT (JSON Web Token) là một tiêu chuẩn mở (RFC 7519) định nghĩa một cách nhỏ gọn và độc lập để truyền thông tin an toàn giữa các bên dưới dạng đối tượng JSON. Thông tin này có thể được xác minh và tin cậy vì nó được ký điện tử. JWT có thể được ký bằng khóa bí mật (với thuật toán HMAC) hoặc cặp khóa công khai/riêng tư bằng RSA hoặc ECDSA.

Cấu Trúc JWT

JWT bao gồm ba phần được phân tách bằng dấu chấm (.), đó là:

xxxxx.yyyyy.zzzzz
  • Tiêu Đề : Chứa loại token (JWT) và thuật toán ký (ví dụ: HS256, RS256)
  • Dữ Liệu : Chứa các xác nhận - tuyên bố về một thực thể (thường là người dùng) và dữ liệu bổ sung
  • Chữ Ký : Được sử dụng để xác minh người gửi JWT là ai và đảm bảo rằng thông điệp không bị thay đổi trên đường truyền

Các Thuật Toán Ký

JWT hỗ trợ nhiều thuật toán ký khác nhau:

  • HS256: HMAC với SHA-256. Thuật toán đối xứng sử dụng khóa bí mật chung
  • HS384: HMAC với SHA-384. Thuật toán đối xứng với hash mạnh hơn
  • HS512: HMAC với SHA-512. Thuật toán đối xứng với hash mạnh nhất
  • RS256: Chữ ký RSA với SHA-256. Thuật toán bất đối xứng sử dụng cặp khóa công khai/riêng tư
  • RS384: Chữ ký RSA với SHA-384. Thuật toán bất đối xứng với hash mạnh hơn
  • RS512: Chữ ký RSA với SHA-512. Thuật toán bất đối xứng với hash mạnh nhất

Các Xác Nhận Tiêu Chuẩn

JWT định nghĩa một số xác nhận tiêu chuẩn (tên xác nhận đã đăng ký) cung cấp thông tin hữu ích:

  • iss (Issuer): Nhà phát hành token
  • sub (Subject): Chủ thể của token (ID người dùng)
  • aud (Audience): Đối tượng mục tiêu
  • exp (Expiration Time): Thời gian hết hạn (Unix timestamp)
  • nbf (Not Before): Không hợp lệ trước thời gian này
  • iat (Issued At): Thời gian phát hành
  • jti (JWT ID): Định danh duy nhất của token

Các Trường Hợp Sử Dụng Phổ Biến

  • Xác thực: Sau khi người dùng đăng nhập, mỗi yêu cầu tiếp theo bao gồm JWT, cho phép truy cập vào các routes, dịch vụ và tài nguyên
  • Trao đổi thông tin: Truyền thông tin an toàn giữa các bên với xác minh chữ ký
  • Đăng nhập một lần (SSO): Được sử dụng rộng rãi cho các tính năng SSO nhờ chi phí thấp và khả năng hoạt động xuyên domain
  • Ủy quyền API: Xác thực không trạng thái cho RESTful APIs
  • OAuth 2.0 và OpenID Connect: Thành phần cốt lõi của các giao thức xác thực hiện đại

Lưu Ý Bảo Mật: Token JWT được ký để xác minh tính xác thực nhưng không được mã hóa theo mặc định. Không lưu trữ thông tin nhạy cảm trong payload trừ khi được mã hóa riêng. Luôn sử dụng HTTPS để truyền token. Lưu trữ token một cách an toàn (ví dụ: httpOnly cookies cho ứng dụng web). Triển khai cơ chế hết hạn và làm mới token phù hợp. Không bao giờ để lộ khóa bí mật trong mã phía client.

Tài Liệu Tham Khảo