Công Cụ Này Là Gì?
JWT (JSON Web Token) là một chuỗi ngắn gọn, an toàn cho URL, dùng để mang claims giữa hai bên — phổ biến nhất là làm token xác thực sau khi đăng nhập. Nó có ba phần cách nhau bởi dấu chấm: header (thuật toán và loại token), payload (các claims thực tế — ID người dùng, vai trò, thời hạn, v.v.), và signature (chữ ký, dùng để máy chủ xác minh token không bị giả mạo).
Header và payload chỉ là JSON được mã hóa Base64URL — không phải mã hóa bảo mật — nên bất kỳ ai cũng có thể giải mã và đọc chúng mà không cần khóa bí mật. Chỉ có signature mới cần khóa bí mật để xác minh. Đó chính xác là những gì công cụ này làm: giải mã các phần có thể đọc được và hiển thị dưới dạng JSON đã định dạng, mà không cố gắng xác minh chữ ký.
Tại Sao Nên Dùng?
- Header và payload có thể đọc được ngay lập tức, định dạng dưới dạng JSON — không cần tách chuỗi thủ công và giải mã Base64 bằng tay nữa.
- Kiểm tra hết hạn tự động: nếu payload có claim "exp", nó được chuyển thành ngày dễ đọc và được đánh dấu là hết hạn hoặc còn hiệu lực.
- Sao chép một chạm cho header hoặc payload riêng biệt.
- 100% phía client — token được giải mã cục bộ và không bao giờ được truyền đi, an toàn để dùng ngay cả với token từ hệ thống production.
- Không thực hiện hoặc khẳng định xác minh chữ ký — đây là công cụ debug/kiểm tra, không phải công cụ xác thực.
Cách Sử Dụng
- Dán JWT của bạn vào ô (chuỗi đầy đủ, gồm cả ba phần cách nhau bởi dấu chấm).
- Header và payload tự động giải mã khi bạn gõ.
- Kiểm tra dòng hết hạn nếu token có claim "exp" — nó hiển thị ngày chính xác và cho biết token đã hết hạn hay chưa.
- Nhấp "Copy" bên dưới mỗi ô để sao chép phần đó dưới dạng JSON.
Ví dụ
Đầu vào
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0IiwibmFtZSI6IkpvaG4gRG9lIiwiZXhwIjoxNzAwMDAwMDAwfQ.dQw4w9WgXcQĐầu ra
Header: {"alg": "HS256"}
Payload: {"sub": "1234", "name": "John Doe", "exp": 1700000000}Signature (phần thứ ba) không bao giờ được giải mã hay kiểm tra — đó là một hash không đọc được, dùng phía máy chủ để xác minh tính xác thực.
Mẹo thực tế
- Debug lỗi "invalid token": giải mã payload trước để kiểm tra claim "exp" — token hết hạn là nguyên nhân phổ biến nhất, và không phải lúc nào cũng rõ ràng chỉ từ thông báo lỗi.
- Kiểm tra token của API bên thứ ba thực sự chứa gì: nhiều API trả về một JWT trông không đọc được như access token — giải mã nó ở đây để xem scope, ID người dùng, hoặc thời hạn mà tích hợp của bạn thực sự nhận được.
- Đừng bao giờ giả định JWT được mã hóa bảo mật: nếu bạn thấy dữ liệu nhạy cảm (email, ID nội bộ) trong payload đã giải mã khi phát triển, đó là tín hiệu để chuyển dữ liệu đó sang phía server thay vì tin rằng client sẽ không đọc được nó.
Các claim thường gặp trong payload
| Claim | Ý nghĩa |
|---|---|
| sub | Subject — thường là ID người dùng mà token đại diện |
| exp | Thời gian hết hạn (Unix timestamp) — token không hợp lệ sau thời điểm này |
| iat | Issued at — thời điểm token được tạo |
| iss | Issuer — dịch vụ/máy chủ nào đã phát hành token |
| aud | Audience — dịch vụ nào token được dành cho |
| role / roles / scope | Claim tùy chỉnh — quyền hoặc vai trò được cấp cho người dùng (không thuộc chuẩn JWT, nhưng cực kỳ phổ biến) |
Câu Hỏi Thường Gặp
Công cụ này có xác minh chữ ký JWT không?
Không. Việc xác minh chữ ký cần khóa bí mật hoặc khóa công khai dùng để ký token, mà chỉ máy chủ phát hành mới có. Công cụ này chỉ giải mã header và payload — các phần con người đọc được — để bạn có thể kiểm tra claims và thời hạn mà không cần bất kỳ khóa nào.
Dán một JWT thật từ production vào đây có an toàn không?
Việc giải mã diễn ra hoàn toàn trong trình duyệt của bạn qua JavaScript — token không bao giờ được gửi đến bất kỳ máy chủ nào, kể cả của chúng tôi. Tuy vậy, hãy đối xử với token như mật khẩu: đừng dán chúng vào những công cụ bạn không tin tưởng, và tránh chia sẻ ảnh chụp màn hình của token đã giải mã có chứa claims nhạy cảm.
Tại sao bất kỳ ai cũng có thể đọc được payload của JWT mà không cần mật khẩu?
Đó là thiết kế có chủ đích — header và payload của JWT được mã hóa Base64URL, không phải mã hóa bảo mật. Việc mã hóa này không phải là bảo mật; nó chỉ giúp JSON an toàn cho URL khi truyền tải. Đừng bao giờ đặt bí mật (mật khẩu, số thẻ tín dụng) trực tiếp trong payload của JWT — hãy giả định rằng bất kỳ ai có token đều có thể đọc được nội dung của nó.
Claim "exp" có nghĩa là gì và tại sao nó quan trọng?
"exp" là thời gian hết hạn của token, dưới dạng Unix timestamp (số giây kể từ năm 1970). Máy chủ từ chối JWT sau khi thời gian này đã qua, buộc client phải xác thực lại. Công cụ này chuyển đổi nó thành ngày dễ đọc và đánh dấu xem token đã hết hạn hay chưa, hữu ích khi debug vấn đề "tại sao phiên đăng nhập của tôi bị đăng xuất".
Token của tôi hiển thị lỗi phân tích JSON — tại sao?
Hoặc chuỗi đó không phải là JWT hợp lệ (phải gồm đúng ba phần cách nhau bởi dấu chấm), hoặc nó đã bị cắt bớt hoặc thay đổi — nguyên nhân phổ biến là token bị vô tình chia thành nhiều dòng hoặc thiếu ký tự cuối khi sao chép.