Giải mã JWT là gì?
JWT (JSON Web Token) là cách chuẩn mà các API web hiện đại dùng để biểu diễn các claim xác thực và ủy quyền. Đây là một token gọn nhẹ, tự chứa, gồm ba phần — một header mô tả thuật toán ký, một payload chứa các claim thực tế (như ID người dùng, vai trò và thời gian hết hạn), và một chữ ký giúp máy chủ nhận có thể xác minh token chưa bị giả mạo.
Công cụ giải mã này đọc header và payload ngay lập tức để bạn có thể gỡ lỗi các vấn đề xác thực, kiểm tra API thực sự gửi những claim gì, hoặc xem token hết hạn khi nào — tất cả mà không cần backend, công cụ dòng lệnh, hay dán các token nhạy cảm lên máy chủ bên thứ ba, vì mọi thứ chạy cục bộ trong trình duyệt của bạn.
Khi Nào Nên Sử Dụng Máy Tính Này
- Gỡ lỗi lý do tại sao API từ chối một token bằng cách kiểm tra các claim và thời gian hết hạn của nó
- Kiểm tra thời gian hết hạn của token trong quá trình xử lý yêu cầu hỗ trợ hoặc phản ứng sự cố
- Xác minh rằng nhà cung cấp SSO hoặc OAuth đang phát hành các claims mà ứng dụng của bạn mong đợi.
- Học cách JWT được cấu trúc để chuẩn bị phỏng vấn hoặc khóa học bảo mật
- Kiểm tra một token được bắt từ công cụ dành cho nhà phát triển của trình duyệt hoặc log máy chủ để hiểu nội dung của nó
- So sánh thuật toán header giữa các token để gỡ lỗi lỗi xác thực không khớp thuật toán
Các bước:
- Dán JWT của bạn vào ô nhập liệu, hoặc nhấn "Tải mẫu" để thử một token có sẵn.
- Header và payload được giải mã tự động khi bạn gõ.
- Xem lại các claim như iss, sub, exp và iat ở dạng dễ đọc.
- Các claim thời gian (exp, iat, nbf) được tự động chuyển thành ngày tháng dễ đọc.
Công Thức
JWT = base64Url(header) + "." + base64Url(payload) + "." + base64Url(signature)
Giải mã: tách theo ".", giải mã Base64Url hai phần đầu, phân tích cú pháp thành JSON.
Xác minh (không thực hiện ở đây): HMACSHA256(base64Url(header) + "." + base64Url(payload), secret) === signature
Trường Hợp Sử Dụng
- Gỡ lỗi lý do tại sao API từ chối một token bằng cách kiểm tra các claim của nó
- Kiểm tra thời gian hết hạn của token trong quá trình xử lý yêu cầu hỗ trợ
- Xác minh nhà cung cấp SSO hay OAuth có phát hành đúng các claim bạn mong đợi
- Học cách JWT được cấu trúc để chuẩn bị phỏng vấn hoặc học tập
- Nhanh chóng kiểm tra một token được dán từ công cụ dành cho nhà phát triển của trình duyệt hoặc log máy chủ
Lợi Ích Chính
- Giải mã bất kỳ JWT nào ngay lập tức mà không cần backend hay công cụ dòng lệnh
- Mọi thứ chạy phía client — token không bao giờ được gửi tới máy chủ
- Tự động chuyển đổi các claim thời gian thành ngày tháng dễ đọc
- Miễn phí, không cần đăng ký, hoạt động với mọi JWT bất kể thuật toán
Mẹo Chuyên Nghiệp
- Luôn kiểm tra 'exp' đầu tiên khi gỡ lỗi lỗi "unauthorized" — token hết hạn là nguyên nhân phổ biến nhất
- Đối chiếu 'alg' trong header với những gì backend của bạn mong đợi để phát hiện lỗi không khớp thuật toán
- Không bao giờ tin payload đã giải mã là bằng chứng danh tính nếu chưa xác minh chữ ký phía máy chủ
- Dùng token ngắn hạn kèm refresh token thay vì JWT dài hạn để hạn chế rủi ro nếu bị rò rỉ
Những Lỗi Thường Gặp Cần Tránh
- Cho rằng một JWT đã giải mã là một JWT đã xác minh — giải mã chỉ đọc nội dung, không xác nhận tính xác thực
- Lưu dữ liệu nhạy cảm (mật khẩu, bí mật) trong payload, quên rằng bất kỳ ai cũng có thể đọc được
- Dán token sản xuất vào các trình giải mã trực tuyến không đáng tin cậy
- Nhầm lẫn 'exp' (hết hạn) với 'iat' (thời điểm phát hành) khi gỡ lỗi vấn đề về thời hạn token
Các Thuật Ngữ Chính Được Giải Thích
- Claim: một mẩu thông tin khẳng định về một chủ thể, như ID người dùng hoặc vai trò
- Header: phân đoạn JWT đầu tiên, chỉ định thuật toán ký và loại token
- Payload: phân đoạn JWT thứ hai, chứa các claim thực tế
- Signature (chữ ký): phân đoạn JWT thứ ba, dùng để xác minh token chưa bị thay đổi
Khái niệm liên quan
- Trình tạo băm:
- Trình tạo UUID:
- Mã hóa/giải mã Base64:
- Trình định dạng JSON:
- Kiểm tra độ mạnh mật khẩu:
Ví Dụ
Một token bắt đầu bằng eyJhbGciOiJIUzI1NiJ9 giải mã thành header {"alg":"HS256","typ":"JWT"} — cho biết token được ký bằng HMAC-SHA256.
Giải thích kết quả của bạn
Trình giải mã tách JWT tại hai dấu chấm phân tách và giải mã hai phân đoạn đầu tiên bằng Base64URL. Phần header cho biết thuật toán ký (như HS256 hoặc RS256) và loại token. Phần payload chứa các claim thực tế — danh tính người dùng, quyền hạn và dấu thời gian.
Các claim dấu thời gian (exp, iat, nbf) tự động được chuyển đổi từ Unix epoch sang ngày có thể đọc được. Nếu 'exp' hiển thị ngày trong quá khứ, token đã hết hạn và hầu hết máy chủ sẽ từ chối nó. Claim 'sub' (chủ thể) thường chứa ID người dùng và 'iss' (người phát hành) xác định máy chủ đã tạo token.
Hãy nhớ rằng giải mã không phải là xác minh. Phần chữ ký được hiển thị nhưng không thể xác minh nếu không có khóa bí mật hoặc khóa công khai. Payload đã giải mã chỉ mang tính thông tin — không bao giờ tin tưởng nó như bằng chứng danh tính mà không có xác minh chữ ký phía máy chủ.

