tigtools

Trình giải mã JWT

Dán JWT để xem header, claim và thời điểm hết hạn. Việc giải mã diễn ra trong trình duyệt và không xác minh chữ ký.

Chạy ngay trên trình duyệt Không cần đăng ký

Giải mã không đồng nghĩa với xác minh: bất kỳ ai cũng có thể tạo token với nội dung tùy ý. Công cụ này không kiểm tra chữ ký. Công cụ chỉ chạy trong trình duyệt, nhưng bạn vẫn nên tránh dán token đang dùng trong môi trường thực tế vào bất kỳ trang web nào.

Cách sử dụng

  1. Sao chép token từ header Authorization, cookie hoặc công cụ dành cho nhà phát triển của trình duyệt. Tiền tố “Bearer ” sẽ được tự động xóa.
  2. Dán token vào ô. Header và payload sẽ hiển thị dưới dạng JSON đã định dạng.
  3. Kiểm tra dòng trạng thái và bảng claim để xem issuer, audience và thời điểm hết hạn theo giờ địa phương.
  4. Sao chép JSON của header hoặc payload nếu bạn cần dùng ở nơi khác.

Cách hoạt động

JSON Web Token (JWT, RFC 7519) ở dạng có chữ ký phổ biến (JWS) gồm ba phần được mã hóa bằng base64url và phân tách bằng dấu chấm. Header cho biết thuật toán đã ký token, ví dụ HS256 (HMAC với SHA-256) hoặc RS256 (RSA). Payload chứa các claim: những thông tin về người dùng và chính token. Chữ ký cho phép máy chủ kiểm tra header và payload có bị thay đổi hay không.

Header và payload chỉ được mã hóa, không được mã hóa bảo mật. Bất kỳ ai có token đều có thể đọc nội dung của nó; đó chính là chức năng của công cụ này. Không đưa thông tin bí mật vào payload JWT.

Giải mã không chứng minh được điều gì về token. Nếu không có khóa của bên phát hành, không ai có thể biết chữ ký có hợp lệ hay không, vì vậy tuyệt đối không dùng kết quả ở đây để quyết định có nên tin cậy token. Việc xác minh phải được thực hiện trên máy chủ của bạn bằng thư viện JWT được duy trì và có khả năng kiểm tra chữ ký, thuật toán, exp, nbf, iss và aud.

Các claim đã đăng ký được giải thích trong bảng. exp, nbf và iat là các giá trị NumericDate: số giây tính từ ngày 1 tháng 1 năm 1970 UTC. Công cụ chuyển đổi các giá trị này thành ngày giờ theo múi giờ của bạn và so sánh với đồng hồ trên thiết bị, không tính khoảng sai số nhỏ mà máy chủ thường cho phép để bù chênh lệch đồng hồ. Nếu đồng hồ của bạn sai, trạng thái hiển thị cũng sẽ sai.

Token có năm phần là JWT được mã hóa (JWE). Không thể giải mã payload nếu không có khóa, vì vậy công cụ chỉ báo định dạng.

Ví dụ

Vì sao API của tôi trả về 401?

Giải mã access token mà ứng dụng của bạn gửi. Nếu dòng trạng thái hiển thị “Đã hết hạn vào …”, ứng dụng cần làm mới token. Nếu aud hiển thị https://api.example.com nhưng bạn đang gọi https://api2.example.com thì audience không khớp.

Kiểm tra ID token OpenID Connect

ID token từ nhà cung cấp dịch vụ đăng nhập chứa iss (nhà cung cấp), sub (ID người dùng ổn định), aud (client ID của bạn), iat và exp, cùng các claim hồ sơ như email và name. Giải mã token sẽ cho thấy chính xác ứng dụng của bạn nhận được những claim nào.

Đọc claim dấu thời gian

Payload chứa "exp": 1735689600. Bảng claim hiển thị giá trị này là ngày 1 tháng 1 năm 2025, 00:00:00 UTC, được chuyển đổi sang giờ địa phương của bạn, đồng thời cho biết thời gian đã trôi qua hoặc còn lại.

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

Công cụ này có xác minh chữ ký JWT không?

Không. Công cụ chỉ giải mã header và payload. Để xác minh, cần có secret (đối với HS256) hoặc khóa công khai của bên phát hành (đối với RS256 và ES256); việc này nên được thực hiện trên máy chủ của bạn bằng thư viện đáng tin cậy.

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

Token được giải mã ngay trong trình duyệt và không được gửi đi đâu cả. Tuy vậy, token còn hiệu lực có thể được dùng như mật khẩu cho đến khi hết hạn, vì thế nên dùng token đã hết hạn hoặc token thử nghiệm, và tuyệt đối không dán token dùng trong môi trường production vào công cụ mà bạn không tin cậy.

Vì sao ai cũng có thể đọc payload?

JWT có chữ ký được mã hóa bằng base64url, không phải mã hóa bảo mật. Chữ ký giúp bảo vệ token khỏi bị chỉnh sửa, chứ không ngăn người khác đọc nội dung. Nếu cần giữ bí mật nội dung, hãy dùng JWT được mã hóa (JWE) hoặc lưu dữ liệu trên máy chủ.

“exp” có nghĩa là gì và đơn vị là gì?

exp là thời điểm hết hạn theo định dạng NumericDate: số giây nguyên (không phải mili giây) kể từ 1970-01-01 00:00:00 UTC. Token phải bị từ chối vào hoặc sau thời điểm đó.

Vì sao tôi nhận được lỗi “not valid base64url”?

Có thể token đã bị cắt hoặc thay đổi khi sao chép, chẳng hạn như mất các ký tự cuối, bị thêm dấu ngoặc kép hoặc được mã hóa URL (%2E thay cho dấu chấm). Hãy dán nguyên token thô như lúc được cấp.

Quyền riêng tư

Token được giải mã bằng JavaScript trong trình duyệt. Token không được gửi đến máy chủ, lưu trữ hay đưa vào dữ liệu phân tích. Không có bước xác minh chữ ký hoặc tra cứu khóa, nên không phát sinh yêu cầu mạng.