Bộ giải mã JWT

Giải mã JSON Web Token (JWT) để xem header, payload và chữ ký. Hữu ích cho việc gỡ lỗi và kiểm tra các token JWT được sử dụng trong xác thực và ủy quyền. Nội dung JWT của bạn sẽ không được lưu ở bất kỳ đâu.

Payload (Các yêu cầu):

Header (Thuật toán Ký & Loại Token):

Chữ ký:

Chữ ký được hiển thị dưới dạng dữ liệu mã hóa Base64URL. Công cụ này không thực hiện xác minh chữ ký.

Thêm về JSON Web Token

Định dạng JWT

JSON Web Token (JWT) là một phương tiện nhỏ gọn, an toàn với URL để biểu diễn các yêu cầu cần được chuyển giữa hai bên. Nó bao gồm ba phần được mã hóa Base64URL và phân tách bằng dấu chấm: header.payload.signature. Header thường chứa loại token (JWT) và thuật toán ký. Payload chứa các yêu cầu—các tuyên bố về một thực thể (thường là người dùng) và siêu dữ liệu bổ sung. Chữ ký được sử dụng để xác minh rằng thông điệp không bị thay đổi trong quá trình truyền.

JOSE (JSON Object Signing and Encryption)

JWT là một phần của khung JOSE (JSON Object Signing and Encryption) lớn hơn, cung cấp cách tiêu chuẩn hóa để bảo mật dữ liệu dựa trên JSON. JOSE bao gồm nhiều đặc tả liên quan: JWS (JSON Web Signature) cho token đã ký, JWE (JSON Web Encryption) cho token đã mã hóa, JWK (JSON Web Key) để biểu diễn các khóa mật mã, và JWA (JSON Web Algorithms) để chỉ định các thuật toán mật mã.

JSON Web Signature (JWS)

Hầu hết các JWT bạn gặp đều là token JWS—chúng được ký nhưng không được mã hóa. Điều này có nghĩa là bất kỳ ai cũng có thể đọc payload bằng cách giải mã Base64URL, nhưng không thể sửa đổi nó mà không làm vô hiệu chữ ký. JWS cung cấp tính toàn vẹn và xác thực: bạn có thể xác minh rằng token được phát hành bởi một bên đáng tin cậy và không bị giả mạo.

Thuật toán Ký

JWS hỗ trợ nhiều thuật toán mật mã để ký token. Chúng được chia thành hai loại: thuật toán đối xứng (cùng một khóa để ký và xác minh) và thuật toán bất đối xứng (khóa riêng để ký, khóa công khai để xác minh).

Thuật toán HMAC (Đối xứng)

HS256, HS384HS512 sử dụng HMAC (Mã xác thực thông điệp dựa trên băm) với SHA-256, SHA-384 hoặc SHA-512 tương ứng. Đây là các thuật toán đối xứng—cùng một khóa bí mật được sử dụng để ký và xác minh token. Thuật toán HMAC nhanh và đơn giản nhưng yêu cầu phân phối khóa an toàn vì cả hai bên đều cần cùng một bí mật.

Thuật toán RSA (Bất đối xứng)

RS256, RS384RS512 sử dụng RSASSA-PKCS1-v1_5 với SHA-256, SHA-384 hoặc SHA-512. PS256, PS384PS512 sử dụng RSASSA-PSS (sơ đồ chữ ký xác suất). Thuật toán RSA sử dụng khóa riêng để ký và khóa công khai để xác minh. Điều này cho phép chia sẻ khóa xác minh công khai mà không ảnh hưởng đến bảo mật—lý tưởng cho các hệ thống phân tán nơi nhiều dịch vụ cần xác minh token.

Thuật toán Đường cong Elliptic (Bất đối xứng)

ES256, ES384ES512 sử dụng ECDSA (Thuật toán Chữ ký Số Đường cong Elliptic) với các đường cong P-256, P-384 hoặc P-521 tương ứng. Thuật toán EC cung cấp mức bảo mật tương đương RSA nhưng với kích thước khóa nhỏ hơn, dẫn đến chữ ký nhỏ hơn và thao tác nhanh hơn. ES256 ngày càng phổ biến cho các ứng dụng hiện đại nhờ hiệu quả của nó.

JSON Web Encryption (JWE)

Trong khi JWS cung cấp token đã ký, JWE cung cấp token đã mã hóa trong đó payload là bí mật. Token JWE có năm phần thay vì ba: header, khóa đã mã hóa, vector khởi tạo, bản mã và thẻ xác thực. JWE hỗ trợ nhiều thuật toán mã hóa bao gồm AES-GCM và AES-CBC với HMAC. Lưu ý rằng bộ giải mã này chỉ xử lý token JWS; token JWE yêu cầu giải mã bằng khóa thích hợp.

Đặc tả RFC

Các tiêu chuẩn JWT và JOSE được định nghĩa trong nhiều RFC của IETF:

  • RFC 7519 định nghĩa JSON Web Token (JWT)
  • RFC 7515 định nghĩa JSON Web Signature (JWS)
  • RFC 7516 định nghĩa JSON Web Encryption (JWE)
  • RFC 7517 định nghĩa JSON Web Key (JWK)
  • RFC 7518 định nghĩa JSON Web Algorithms (JWA).

Công cụ liên quan