JWT Decoder / Inspector
Bạn đang debug một API và thấy trong request header có cái gì đó trông như thế này:
Ba đoạn ký tự ngăn cách nhau bởi dấu chấm, trông như mã hoá nhưng không hẳn — đó là JWT (JSON Web Token). Tool JWT Decoder này giúp bạn "bóc tách" chuỗi đó ra ngay lập tức, xem bên trong chứa gì mà không cần tự giải mã bằng tay.
JWT là gì?
JWT (JSON Web Token) là một chuẩn mở (RFC 7519) để truyền thông tin giữa các bên dưới dạng JSON object được ký điện tử. JWT được dùng cực kỳ phổ biến trong xác thực (authentication) và phân quyền (authorization) của các ứng dụng web và mobile hiện đại.
Mỗi khi bạn đăng nhập vào một ứng dụng, server thường trả về một JWT token. Token này được lưu ở client (cookie hoặc localStorage) và gửi kèm trong mỗi request tiếp theo để server biết bạn là ai và bạn được phép làm gì — mà không cần tra cứu database mỗi lần.
Cấu trúc của một JWT token
JWT gồm 3 phần, ngăn cách nhau bởi dấu chấm (.), mỗi phần được encode bằng Base64URL:
| Phần | Tên gọi | Nội dung |
|---|---|---|
| Phần 1 | Header | Loại token (typ) và thuật toán ký (alg): HS256, RS256, ES256… |
| Phần 2 | Payload | Dữ liệu thực sự: user ID, role, thời gian hết hạn (exp), thời gian phát hành (iat)… |
| Phần 3 | Signature | Chữ ký số — dùng để xác minh token chưa bị chỉnh sửa |
Ví dụ sau khi decode phần Header và Payload của token:
Lưu ý quan trọng: Phần Header và Payload chỉ được encode (Base64URL), không phải mã hoá (encrypt). Điều đó có nghĩa là bất kỳ ai cũng có thể đọc được nội dung nếu có token — đừng bao giờ lưu thông tin nhạy cảm như mật khẩu hay số thẻ tín dụng trong JWT payload.
Các claims phổ biến trong JWT payload
| Claim | Tên đầy đủ | Ý nghĩa |
|---|---|---|
iss | Issuer | Ai phát hành token (tên domain/service) |
sub | Subject | Đối tượng token đại diện (thường là user ID) |
aud | Audience | Token này dùng cho service nào |
exp | Expiration Time | Thời điểm token hết hạn (Unix timestamp) |
iat | Issued At | Thời điểm token được phát hành |
nbf | Not Before | Token chỉ có hiệu lực từ thời điểm này |
jti | JWT ID | ID duy nhất của token (tránh replay attack) |
Cách sử dụng JWT decoder
- Bước 1: Copy chuỗi JWT token cần kiểm tra (thường lấy từ DevTools > Network > Request Headers > Authorization).
- Bước 2: Dán vào ô nhập liệu của tool.
- Bước 3: Tool tự động parse và hiển thị Header, Payload dưới dạng JSON có định dạng đẹp — kèm thời gian hết hạn được chuyển đổi sang dạng ngày giờ dễ đọc.
- Bước 4: Kiểm tra thông tin cần thiết: role, user ID, thời gian hết hạn…
Tool không yêu cầu secret key để decode phần Header và Payload — vì hai phần này chỉ encode Base64URL, không cần key để đọc. Secret key chỉ cần thiết khi bạn muốn xác minh chữ ký (verify signature) — tức là kiểm tra token có bị giả mạo hay không.
Khi nào bạn cần dùng JWT decoder?
| Tình huống | Mục đích |
|---|---|
| Debug API trả về lỗi 401 Unauthorized | Kiểm tra token có hết hạn chưa (exp), role có đúng không |
| Phát triển tính năng đăng nhập / phân quyền | Xác nhận server đang nhúng đúng thông tin vào token |
| Review code hoặc audit bảo mật | Kiểm tra token có chứa thông tin nhạy cảm không nên có |
| Học về JWT và cơ chế xác thực | Xem cấu trúc thực tế của token để hiểu rõ hơn |
| Tích hợp với bên thứ ba (OAuth, SSO) | Đọc claims từ token của provider để map với hệ thống nội bộ |
Lưu ý bảo mật khi làm việc với JWT
- Không paste JWT production vào tool online lạ: Token production chứa thông tin người dùng thật. Tool này xử lý tại trình duyệt của bạn, nhưng với token nhạy cảm hãy dùng môi trường offline hoặc tự decode bằng code.
- Luôn kiểm tra
exp: Token hết hạn phải bị từ chối. Nhiều lỗ hổng bảo mật xảy ra do backend không kiểm tra thời gian hết hạn đúng cách. - Không lưu dữ liệu nhạy cảm trong payload: Payload đọc được không cần key. Chỉ lưu những gì cần thiết và không bí mật (user ID, role, permissions).
- Dùng HTTPS: JWT trong header bị lộ nếu truyền qua HTTP. Luôn dùng HTTPS cho các endpoint có xác thực.
- Chọn thuật toán phù hợp: Tránh dùng
alg: none— đây là lỗ hổng bảo mật nghiêm trọng. Ưu tiên RS256 hoặc ES256 cho production.
Kết luận
JWT decoder là tool không thể thiếu trong bộ công cụ của bất kỳ developer nào làm việc với API hiện đại. Thay vì mở terminal gõ lệnh decode thủ công hay tra cứu bảng Base64URL, chỉ cần paste token vào đây — mọi thứ hiện ra rõ ràng trong vài giây.
Khám phá thêm các tool hữu ích khác tại codetuthub.com/tools — từ Hash Generator, URL Encoder đến các tiện ích lập trình khác, tất cả miễn phí và không cần đăng ký.