Chuyển đến nội dung
ToolMug

Giải mã JWT

Dán một JSON Web Token để xem header và payload, kiểm tra token đã hết hạn hay chưa, và xác minh chữ ký bằng khóa bí mật hoặc khóa công khai. Mọi thao tác diễn ra ngay trên máy của bạn, nên token thật không bao giờ được gửi lên máy chủ.

Chạy trong trình duyệt — không có dữ liệu nào bạn nhập bị tải lên

Giải mã không xác minh chữ ký. Bất kỳ ai cũng có thể tạo token với claim tùy ý.

Cách sử dụng

  1. Dán token vào — có hoặc không có tiền tố "Bearer " đều được. Ba phần được tô màu riêng biệt.
  2. Đọc header và payload đã giải mã. Các claim iat, nbf và exp hiển thị dưới dạng ngày kèm thời gian tương đối.
  3. Để xác minh chữ ký, nhập khóa bí mật dùng chung cho HS256/384/512, hoặc dán khóa công khai (PEM hoặc JWK) cho token RS, PS, ES và EdDSA.
  4. Sao chép JSON đã giải mã nếu cần dùng ở nơi khác.

Giải thích tùy chọn

Header
Thông tin mô tả về token, thường gồm alg (thuật toán ký) và typ. Trường kid cho biết khóa nào đã ký token.
Payload
Các claim của token. Những claim đã đăng ký gồm sub (chủ thể), iss (bên phát hành), aud (đối tượng nhận), iat (phát hành lúc), nbf (hiệu lực từ) và exp (hết hạn), tất cả tính bằng giây Unix.
Chữ ký (Signature)
Chứng minh header và payload chưa bị thay đổi. Kiểm tra cần khóa bí mật (HMAC) hoặc khóa công khai của bên phát hành (RSA, ECDSA, EdDSA).
Khóa bí mật là Base64
Một số dịch vụ lưu khóa bí mật HMAC dưới dạng mã hóa Base64. Hãy tick vào đây nếu khóa bạn có là dạng đã mã hóa.

Các claim phổ biến

Claim Ý nghĩa Ví dụ
sub Token này nói về ai (ID người dùng) "1234567890"
iss Bên phát hành "https://accounts.example.com"
aud Đối tượng nhận "my-api"
exp Thời điểm hết hạn, giây Unix 1790427600
iat Phát hành lúc, giây Unix 1790424000
nbf Không hợp lệ trước, giây Unix 1790424000
jti ID token duy nhất, dùng để chống replay "a1b2c3"

Ví dụ

Token eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c giải mã ra header {"alg":"HS256","typ":"JWT"} và payload chứa sub, name và iat (18 tháng 1 năm 2018). Với khóa bí mật your-256-bit-secret, chữ ký được xác minh hợp lệ.

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

Dán JWT thật (production) vào đây có an toàn không?

Token được giải mã bằng JavaScript ngay trong trình duyệt của bạn, không bị tải lên hay ghi log. Tuy vậy, hãy coi access token như mật khẩu — bất kỳ ai có token hợp lệ đều dùng được token đó đến khi nó hết hạn.

Giải mã JWT có chứng minh được token là thật không?

Không. Header và payload chỉ được mã hóa Base64URL, nên ai cũng đọc được hoặc giả mạo được. Chỉ khi xác minh chữ ký thành công với đúng khóa mới cho biết token do đúng bên phát hành cấp.

Vì sao xác minh thất bại dù khóa bí mật đúng?

Kiểm tra xem khóa có được mã hóa Base64 không, có khoảng trắng hay dấu xuống dòng thừa không, và thuật toán ghi trong header có khớp với thuật toán bên phát hành dùng không. Chỉ một thay đổi nhỏ trong token, dù chỉ một ký tự, cũng làm hỏng chữ ký.

"alg none" nghĩa là gì?

Token tự khai là không được ký. Máy chủ phải từ chối những token như vậy trừ khi chủ động chấp nhận; việc chấp nhận nhầm đã từng gây ra các lỗ hổng bỏ qua xác thực trong thực tế.

Làm sao lấy khóa công khai cho token RS256?

Các nhà cung cấp danh tính công bố khóa dưới dạng JWKS, thường ở đường dẫn /.well-known/jwks.json. Sao chép khóa có kid khớp với header của token và dán vào đây dưới dạng JWK.

Quyền riêng tư

Công cụ này chạy hoàn toàn trong trình duyệt của bạn. Tệp và văn bản được xử lý ngay trên thiết bị và không bao giờ được tải lên máy chủ của chúng tôi.

Công cụ liên quan