Lập Trình

Giải mã JWT

Dán bất kỳ JWT nào để giải mã ngay lập tức phần header và payload — kiểm tra các claim, thời gian hết hạn và chữ ký mà không cần rời khỏi trình duyệt hay gửi dữ liệu đi bất cứ đâu.

Công cụ này có hữu ích với bạn không?

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:

  1. 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.
  2. Header và payload được giải mã tự động khi bạn gõ.
  3. Xem lại các claim như iss, sub, exp và iat ở dạng dễ đọc.
  4. 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

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ủ.

Câu Hỏi Thường Gặp

JWT là gì?
JSON Web Token (JWT) là một cách gọn nhẹ, an toàn với URL để biểu diễn các claim giữa hai bên. Nó gồm ba phần được mã hóa Base64URL, phân tách bằng dấu chấm: header, payload và chữ ký.
Dán JWT của tôi vào công cụ nà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 bằng JavaScript — token không bao giờ được gửi tới bất kỳ máy chủ nào. Tuy nhiên, hãy coi JWT như mật khẩu: tránh dán các token từ hệ thống sản xuất (production) vào bất kỳ công cụ trực tuyến nào, kể cả công cụ này.
Tại sao công cụ này không thể xác minh chữ ký?
Việc xác minh chữ ký của JWT cần khóa bí mật (với thuật toán HMAC) hoặc khóa công khai (với thuật toán RSA/ECDSA), thứ mà chỉ máy chủ phát hành mới nên có. Công cụ này chỉ giải mã header và payload dạng đọc được — nó không bao giờ có quyền truy cập vào khóa đó.
Claim 'exp' có ý nghĩa gì?
'exp' (Expiration Time) là một mốc thời gian Unix cho biết khi nào token ngừng hiệu lực. Công cụ này tự động chuyển đổi nó thành ngày tháng dễ đọc để bạn nhanh chóng kiểm tra token đã hết hạn hay chưa.
JWT là gì?
JSON Web Token (JWT) là một phương pháp gọn gàng và an toàn cho URL để biểu diễn các yêu cầu giữa hai bên. Nó bao gồm ba phần được mã hóa Base64URL phân tách bằng dấu chấm: tiêu đề, nội dung và chữ ký.
Dán JWT của tôi vào công cụ này có an toàn không?
Các thuật toán phổ biến bao gồm HS256 (HMAC-SHA256, đối xứng), RS256 (RSA-SHA256, bất đối xứng) và ES256 (ECDSA). Trường 'alg' trong tiêu đề xác định thuật toán. Phổ biến nhất cho API web là HS256 hoặc RS256.
Tại sao công cụ này không thể xác minh chữ ký?
'iat' (Thời gian phát hành) là thời điểm mã thông báo được tạo. 'nbf' (Không trước) là thời điểm mã thông báo bắt đầu có hiệu lực. Nếu 'nbf' ở tương lai, mã thông báo nên bị từ chối ngay cả khi chưa hết hạn.
Claim 'exp' có ý nghĩa gì?
Tiêu đề và tải trọng chỉ được mã hóa Base64URL chứ không được mã hóa bảo mật. Bất kỳ ai cũng có thể đọc chúng. Không bao giờ lưu trữ mật khẩu, bí mật hoặc dữ liệu cá nhân nhạy cảm trong tải trọng JWT. Chỉ đưa các claims không nhạy cảm như ID người dùng, vai trò và dấu thời gian.
JWT có thể sử dụng thuật toán nào?
Mã truy cập thường tồn tại 15–60 phút. Mã làm mới tồn tại từ vài giờ đến vài ngày. Mã truy cập tồn tại ngắn kết hợp với mã làm mới tồn tại dài cân bằng giữa bảo mật và trải nghiệm người dùng.
Làm cách nào để sao chép các claims đã giải mã?
Mã làm mới là mã tồn tại lâu dùng để lấy mã truy cập mới mà không yêu cầu người dùng xác thực lại. Khi mã truy cập tồn tại ngắn hết hạn, máy khách gửi mã làm mới để nhận mã truy cập mới.
Làm cách nào để sao chép các claims đã giải mã?
Tiêu đề và tải trọng đã giải mã được hiển thị dưới dạng JSON đã định dạng. Bạn có thể sao chép toàn bộ đầu ra đã giải mã hoặc từng giá trị claim riêng lẻ cho mục đích gỡ lỗi hoặc tài liệu.

Khám Phá Thêm Công Cụ

Những công cụ mới được chọn lọc từ thư viện của chúng tôi.