nicetool.dev logo

JWT là gì?

JSON Web Token (JWT) là một tiêu chuẩn mở (RFC 7519) định nghĩa một cách nhỏ gọn và tự chứa để truyền tải thông tin giữa các bên một cách an toà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ý kỹ thuật số.

Cấu trúc JWT

Một JWT là chuỗi ký tự gồm ba phần được mã hóa Base64URL: Header (Thuật toán & Loại token), Payload (Dữ liệu/Claims) và Signature (Chữ ký). Các phần này được nối tiếp nhau bằng dấu chấm (.) theo định dạng:

header.payload.signature

Các trường hợp sử dụng phổ biến

  • Ủy quyền: Kịch bản phổ biến nhất. Sau khi người dùng đăng nhập, mỗi yêu cầu tiếp theo sẽ bao gồm JWT, cho phép người dùng truy cập các tuyến, dịch vụ và tài nguyên.
  • Trao đổi thông tin: JWT là cách tốt để kiểm tra thông tin xác thực giữa các bên.
  • Phiên làm việc phi trạng thái (Stateless): Không cần lưu dữ liệu phiên trên máy chủ; token chứa tất cả thông tin người dùng cần thiết.

Quyền riêng tư & Bảo mật

Bảo mật của bạn là ưu tiên hàng đầu của chúng tôi. Tất cả logic giải mã và xác minh JWT diễn ra ở phía client trong trình duyệt của bạn. Không có token, header hoặc payload nào được gửi đến máy chủ của chúng tôi.

100% Trên Trình Duyệt

Cách dùng công cụ JWT Debugger

  1. 1

    Dán token (bắt đầu bằng eyJ) vào ô Encoded. Header và payload được giải mã ngay và hiển thị dưới dạng JSON đã định dạng.

  2. 2

    Xem các claim chuẩn. Các mốc thời gian như exp, iat và nbf được hiển thị thành ngày giờ dễ đọc, nên biết ngay token đã hết hạn hay chưa có hiệu lực.

  3. 3

    Để kiểm tra chữ ký, nhập secret HMAC (HS256/384/512) hoặc public key dạng PEM (RS256/384/512, ES256/384/512). Công cụ sẽ báo chữ ký có khớp hay không.

  4. 4

    Chuyển sang chế độ Generator để tạo token test: sửa payload, chọn thuật toán, nhập secret hoặc private key rồi sao chép JWT đã ký.

Ví dụ thực tế

Gỡ lỗi 401

API từ chối request với lỗi 401 Unauthorized. Giải mã token để tìm exp đã hết hạn, aud (audience) sai hay thiếu claim scope.

Kiểm tra token từ nhà cung cấp định danh

Xem ID token từ Auth0, Keycloak, Firebase hay Azure AD để biết ứng dụng thật sự nhận được những claim nào (email, roles, groups).

Kiểm thử phân quyền

Tạo token có role "admin" và role "viewer" ký bằng secret môi trường dev để test cả hai nhánh của đoạn kiểm tra quyền.

Xác minh việc xoay vòng khóa

Sau khi đổi khóa, dán token mới và public key mới để chắc chắn kid trong header và chữ ký khớp với khóa mới.

Câu hỏi thường gặp

JWT có được mã hóa không?+

Thường là không. JWT chuẩn (JWS) chỉ được mã hóa Base64URL và ký. Ai cũng đọc được payload, nên đừng bao giờ đặt mật khẩu hay dữ liệu cá nhân nhạy cảm vào đó. Token mã hóa (JWE) là một định dạng khác.

Ba phần của JWT có ý nghĩa gì?+

header.payload.signature: header ghi thuật toán và loại token, payload chứa các claim, còn chữ ký chứng minh hai phần đầu được tạo bởi người giữ khóa và không bị sửa đổi.

Dán token production vào đây có an toàn không?+

Việc giải mã và kiểm tra chạy hoàn toàn trong trình duyệt, không gửi gì về máy chủ của chúng tôi. Dù vậy, token hợp lệ có tác dụng như mật khẩu cho đến khi hết hạn, nên ưu tiên dùng token test hoặc thu hồi token thật sau khi gỡ lỗi.

Nên dùng HS256 hay RS256?+

HS256 dùng một secret chung để ký và kiểm tra, đơn giản khi chỉ có một dịch vụ. RS256 và ES256 ký bằng private key và kiểm tra bằng public key, phù hợp khi nhiều dịch vụ cùng kiểm tra token do một nơi phát hành.