Trình Giải Mã JWT

Giải mã một JSON Web Token cục bộ, kiểm tra JSON của header và payload, đọc các claim phổ biến và xem hướng dẫn về dấu thời gian mà không coi việc giải mã là xác minh.

Toàn bộ quá trình giải mã JWT diễn ra cục bộ trong trình duyệt của bạn. Token sẽ không được gửi đến máy chủ của Decode It.

Chỉ giải mã

Giải mã header và payload cục bộ. Không xác minh chữ ký và không chứng minh rằng token là đáng tin cậy.

Không dán khóa ký, khóa riêng tư hoặc token sản xuất mà bạn không được phép kiểm tra.

Ví dụ nhanh

Dán một JWT để giải mã header, payload, các claim thời gian và các phân đoạn thô.

Những gì một trình giải mã JWT hiển thị

Một JSON Web Token, hay JWT, là một định dạng token gọn nhẹ thường được sử dụng trong xác thực, ủy quyền, phiên API và quy trình quản lý danh tính. Một JWT thường có ba phần phân tách bằng dấu chấm: header, payload và signature. header và payload là JSON được mã hóa base64url, có nghĩa là chúng có thể được giải mã và đọc mà không cần khóa bí mật.

Trình giải mã JWT này tập trung vào việc kiểm tra. Nó định dạng header và payload, trích xuất các claim phổ biến, hiển thị các đoạn thô và giải thích các claim theo thời gian như iat, nbf, và exp. Điều này hữu ích khi gỡ lỗi luồng đăng nhập, cuộc gọi API, môi trường thử nghiệm, tích hợp OAuth hoặc các vấn đề về thời gian sống của token.

  • Đọc thuật toán và loại token từ header.
  • Kiểm tra issuer, subject, audience và các claim tùy chỉnh trong payload.
  • Chuyển các claim NumericDate thành các ngày có thể đọc được.
  • Sao chép header đã giải mã, payload đã giải mã hoặc các đoạn token thô.

Giải mã không phải là xác minh

Giải mã một JWT cho bạn biết nội dung token. Nó không chứng minh ai đã tạo token, payload có bị sửa đổi hay không, chữ ký có khớp hay không, hoặc ứng dụng của bạn có nên chấp nhận nó hay không. Việc xác minh chữ ký đòi hỏi khóa bí mật đúng, khoá công khai hoặc cấu hình JWKS và phải khớp với thuật toán mà ứng dụng mong đợi.

Phần chữ ký khác với header và payload. Nó là một giá trị mật mã học trên header và payload đã mã hóa, không phải một đối tượng JSON khác để giải mã. Trang này hiển thị chữ ký trong phần đầu ra các đoạn thô khi nó tồn tại, nhưng không yêu cầu khóa ký hoặc xác minh giá trị.

Hãy xem trang này như một công cụ kiểm tra, không phải một cơ quan có thẩm quyền. Một token đã giải mã vẫn có thể là giả, đã hết hạn, không được ký, được ký bằng khóa không mong đợi hoặc bị dịch vụ phát hành từ chối.

Các claim JWT phổ biến

Claim Meaning Sử dụng điển hình
iss Issuer Dịch vụ hoặc nhà cung cấp danh tính đã phát hành token.
sub Subject Người dùng, tài khoản, client hoặc thực thể mà token liên quan đến.
aud Audience API, ứng dụng hoặc dịch vụ nên nhận token này.
iat Được phát hành tại Khi token được tạo.
nbf Không áp dụng trước thời điểm này Token không nên được chấp nhận trước thời điểm này.
exp Hết hạn vào Token không nên được chấp nhận sau thời điểm này.

Thói quen gỡ lỗi an toàn

  • Sử dụng token thử nghiệm khi có thể thay vì token người dùng production.
  • Không dán bí mật ký, khóa riêng tư hoặc thông tin xác thực API vào trình giải mã.
  • Kiểm tra xem thuật toán có phải là thuật toán mà ứng dụng của bạn mong đợi hay không.
  • Compare iss and aud so sánh với dịch vụ mà bạn đang gỡ lỗi.
  • Hãy nhớ rằng thời gian trên trình duyệt và thời gian trên máy chủ có thể khác nhau khi gỡ lỗi các vấn đề về hết hạn.

Các công cụ cục bộ liên quan

  • Sử dụng Base64 Encoder Decoder khi bạn cần kiểm tra các chuỗi base64 thông thường. JWT sử dụng base64url, vì vậy trình giải mã JWT này vẫn phù hợp và an toàn hơn để kiểm tra toàn bộ token.
  • Sử dụng JSON Beautifier khi bạn muốn định dạng các đối tượng payload đã sao chép bên ngoài ngữ cảnh token.
  • Sử dụng Unix Timestamp Converter khi bạn cần kiểm tra dấu thời gian chuyên dụng cho các giá trị NumericDate như iat, nbf, hoặc exp.

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

Trình giải mã JWT này có xác minh chữ ký không?

Không. Nó giải mã header và payload để bạn có thể kiểm tra chúng, nhưng không xác minh chữ ký hay chứng minh token là đáng tin cậy. Việc xác minh yêu cầu bí mật của issuer, khóa công khai hoặc cấu hình JWKS. Chữ ký không được hiển thị như một bảng JSON đã giải mã vì nó là một giá trị mật mã học, không phải dữ liệu claim có thể đọc được; công cụ này chỉ hiển thị nó trong phần đầu ra các đoạn thô.

Ai cũng có thể giải mã một JWT chứ?

Có, header và payload được mã hóa (encoded), không phải mã hóa (encrypted), trừ khi hệ thống của bạn sử dụng định dạng token được mã hóa riêng. Đừng đặt bí mật trong payload JWT.

JWT đã hết hạn có ý nghĩa gì?

Nếu claim exp nằm trong quá khứ, máy chủ thường nên từ chối token. Trang này có thể hiển thị dấu thời gian, nhưng máy chủ là cơ quan cuối cùng quyết định.

Tại sao công cụ chấp nhận tiền tố Bearer?

Các nhà phát triển thường sao chép token từ một header Authorization: Bearer ... Authorization: Bearer ... công cụ sẽ loại bỏ tiền tố trước khi giải mã phần thân của token.