Chuyển đổi miễn phí

Mã thông báo JWT Bộ giải mã

Giải mã tiêu đề và tải trọng JWT (JSON Web Token) ngay lập tức trong trình duyệt của bạn. Miễn phí, riêng tư và phía khách hàng - không có dữ liệu nào được gửi đến bất kỳ máy chủ nào.

Về công cụ này

Mã thông báo web JSON (JWT) là một định dạng nhỏ gọn, an toàn với URL để truyền xác nhận quyền sở hữu giữa hai bên, được xác định bởi RFC 7519. JWT là ba phân đoạn được mã hóa base64url được phân tách bằng dấu chấm: tiêu đề (thuật toán và loại mã thông báo), tải trọng (xác nhận quyền sở hữu) và chữ ký (bằng chứng xác thực bằng mật mã). Tiêu đề và tải trọng là JSON, được mã hóa base64url để đảm bảo an toàn cho URL; chữ ký sử dụng một trong một số thuật toán (HS256, RS256, ES256 và các thuật toán khác) trên tiêu đề và tải trọng được mã hóa.

Giải mã JWT - chia nó thành các phân đoạn và giải mã base64 từng phân đoạn - không yêu cầu bất kỳ bí mật nào. Bất kỳ ai có văn bản mã thông báo đều có thể đọc tiêu đề và tải trọng của nó. Tuy nhiên, chữ ký chỉ có thể được xác minh bằng khóa bí mật (HMAC) hoặc khóa chung (bất đối xứng). Giải mã là để kiểm tra; xác minh là những gì chứng minh tính xác thực.

Bộ giải mã này phân tách mã thông báo, giải mã base64 từng phân đoạn, phân tích tiêu đề và tải trọng dưới dạng JSON và hiển thị kết quả. Nó không cố gắng xác minh chữ ký vì điều đó yêu cầu khóa bí mật hoặc khóa chung mà bộ giải mã không có. Đầu ra được giải mã là kiểm tra chỉ đọc — hữu ích cho việc gỡ lỗi mã thông báo nhưng không thể thay thế cho việc xác minh chính xác trong mã ứng dụng.

Tại sao giải mã JWT

Việc gỡ lỗi các vấn đề xác thực hầu như luôn liên quan đến việc kiểm tra mã thông báo. Mã thông báo có vẻ hợp lệ trong mã có thể có xác nhận quyền sở hữu sai, thuật toán không mong muốn, dấu thời gian hết hạn hoặc đối tượng không khớp. Việc giải mã mã thông báo sẽ tiết lộ chính xác những gì nhà phát hành đã tạo ra.

Việc kiểm tra mã thông báo trong quá trình tích hợp cũng có ích. Khi kết nối với API hoặc nhà cung cấp danh tính bên thứ ba, tên, định dạng và cấu trúc xác nhận quyền sở hữu thực tế được hiểu rõ nhất bằng cách giải mã mã thông báo mẫu thay vì dựa vào tài liệu có thể đã lỗi thời.

Cách sử dụng

Dán mã thông báo, lấy nội dung được phân tích cú pháp.

  1. Dán JWT của bạn: Thả toàn bộ mã thông báo (header.payload.signature) vào khu vực nhập. Bộ giải mã chấp nhận mã thông báo có hoặc không có tiền tố Bearer tùy chọn.
  2. Kiểm tra tiêu đề: Tiêu đề hiển thị thuật toán ký (alg) và loại mã thông báo (typ). Các thuật toán phổ biến là HS256, RS256 và ES256. Để ý alg: none, tín hiệu này báo hiệu mã thông báo chưa được ký và hiếm khi an toàn trong sản xuất.
  3. Kiểm tra tải trọng: Tải trọng chứa các xác nhận quyền sở hữu: iss (nhà phát hành), sub (chủ đề), aud (đối tượng), exp (hết hạn), iat (được phát hành tại) và mọi xác nhận quyền sở hữu dành riêng cho ứng dụng. Dấu thời gian tiêu chuẩn là giây kỷ nguyên Unix.
  4. Xác minh riêng: Bộ giải mã không xác minh chữ ký. Để kiểm tra tính xác thực, hãy chạy mã thông báo thông qua thư viện JWT với khóa bí mật hoặc khóa chung thích hợp trong mã ứng dụng của bạn.

Các trường hợp sử dụng phổ biến

Chi tiết kỹ thuật

Định dạng JWT là ba đoạn được nối bằng dấu chấm. Mỗi phân đoạn được mã hóa base64url — biến thể an toàn URL của base64 sử dụng - và _ thay vì + và /, đôi khi bị bỏ qua phần đệm. Việc giải mã yêu cầu hoàn tác các thay thế an toàn cho URL, đệm phân đoạn và giải mã base64.

Tiêu đề và tải trọng là JSON sau khi giải mã. Phân đoạn chữ ký là nhị phân (byte chữ ký thô) và con người không thể đọc được; nó yêu cầu khóa xác minh mới hữu ích.

Các xác nhận quyền sở hữu phổ biến được xác định trong RFC 7519: iss (nhà phát hành), sub (mã định danh chủ đề), aud (đối tượng), exp (hết hạn dưới dạng giây kỷ nguyên Unix), nbf (không có trước dấu thời gian), iat (được phát hành tại dấu thời gian), jti (ID mã thông báo duy nhất). Khiếu nại dành riêng cho ứng dụng có thể xuất hiện với bất kỳ tên nào.

Thực tiễn tốt nhất

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

Có an toàn khi dán JWT của tôi vào đây không?
Đúng. Quá trình giải mã diễn ra hoàn toàn trong trình duyệt của bạn — mã thông báo không bao giờ được gửi đến bất kỳ máy chủ nào. Tuy nhiên, JWT là thông tin xác thực — không chia sẻ chúng một cách công khai (trong ảnh chụp màn hình, bài đăng trên Stack Overflow, v.v.) vì chúng có thể cấp quyền truy cập vào tài khoản của bạn.
Công cụ này có xác minh chữ ký JWT không?
Công cụ này giải mã và hiển thị nội dung mã thông báo. Xác minh chữ ký yêu cầu khóa bí mật (HMAC) hoặc khóa chung (RSA/ECDSA), khóa này sẽ vẫn còn trên máy chủ của bạn. Công cụ hiển thị thuật toán được sử dụng nhưng không thể xác minh nếu không có key.
Tuyên bố JWT tiêu chuẩn có ý nghĩa gì?
iss = nhà phát hành, sub = chủ đề (ID người dùng), exp = thời gian hết hạn (dấu thời gian Unix), iat = phát hành vào lúc, nbf = không trước đó, aud = khán giả, jti = ID JWT. Khiếu nại tùy chỉnh có thể chứa bất kỳ dữ liệu dành riêng cho ứng dụng nào.
Tại sao mọi người có thể giải mã JWT?
JWT được mã hóa, không được mã hóa. Tải trọng được mã hóa Base64URL (không được mã hóa) nên bất kỳ ai cũng có thể đọc được. Chữ ký chống giả mạo, không đọc được. Không bao giờ lưu trữ dữ liệu nhạy cảm (mật khẩu, SSN) trong tải trọng JWT.
Tại sao một số mã thông báo thiếu chữ ký?
Mã thông báo có alg: không có mã thông báo nào không có chữ ký. Chúng là các JWT hợp lệ theo thông số kỹ thuật nhưng không đảm bảo tính xác thực và không được chấp nhận trong sản xuất.
JWT có được mã hóa không?
Tải trọng JWT tiêu chuẩn được ký nhưng không được mã hóa. JWE (Mã hóa web JSON, RFC 7516) là một định dạng riêng cho mã thông báo được mã hóa. Hầu hết JWT trong tự nhiên là JWS (chỉ có chữ ký).
Mã thông báo của tôi có được tải lên máy chủ không?
Không. Quá trình giải mã diễn ra trong trình duyệt của bạn; mã thông báo không rời khỏi thiết bị của bạn.
JWT thường kéo dài bao lâu?
Bất cứ nơi nào từ vài trăm đến vài nghìn ký tự. Độ dài phụ thuộc vào số lượng và kích thước yêu cầu cộng với độ dài chữ ký (phụ thuộc vào thuật toán).