Bỏ qua đến nội dung chính
FreeOnlineTools Go
Tiếng Việt
Giải thích

JWT là gì? Giải thích đầy đủ về Mã thông báo Web JSON

Bởi FreeOnlineTools Team · Đã cập nhật 2026-09-02

Trả lời nhanh

JWT là chuỗi với ba phần mã hóa Base64URL phân tách bởi dấu chấm: header.payload.signature. Header chỉ định thuật toán, payload chứa claim (user ID, roles, expiration) và signature chứng minh tính xác thực. Dùng JWT Decoder miễn phí để inspect nội dung token.

Giới thiệu

JWT (JSON Web Token) là định dạng token compact, URL-safe định nghĩa bởi RFC 7519 để truyền thông tin an toàn giữa các bên as object JSON. JWT được dùng phổ biến cho authentication trong ứng dụng web: sau login server cấp JWT mà client включить trong request tiếp theo. JWT stateless —server không cần lookup token trong cơ sở dữ liệu; token tự chứa claim và signature.

Từng bước một

  1. Hiểu cấu trúc ba phần

    JWT có ba phần: tiêu đề (thuật toán và loại), tải trọng (xác nhận quyền sở hữu) và chữ ký (chứng minh tính toàn vẹn). Mỗi phần được mã hóa Base64URL và phân tách bằng dấu chấm: eyJhbGciOi...J9.eyJzdWIi...J9.signature. Bất kỳ ai có mã thông báo đều có thể đọc được hai phần đầu tiên; chỉ có chữ ký yêu cầu khóa bí mật.

  2. Tìm hiểu các yêu cầu tiêu chuẩn

    Tải trọng chứa các xác nhận quyền sở hữu - các tuyên bố về chủ đề này. Xác nhận quyền sở hữu tiêu chuẩn: 'sub' (chủ đề/ID người dùng), 'iat' (được phát hành vào thời điểm dấu thời gian), 'exp' (hết hạn), 'nbf' (không phải trước đó), 'iss' (nhà phát hành), 'aud' (đối tượng). Xác nhận quyền sở hữu tùy chỉnh có thể bao gồm vai trò, quyền hoặc bất kỳ dữ liệu nào khác.

  3. Hiểu thuật toán ký

    JWT sử dụng ký hiệu đối xứng (HS256 - bí mật chung) hoặc bất đối xứng (RS256, ES256 - cặp khóa chung/riêng). Chữ ký ngăn chặn việc giả mạo: việc thay đổi bất kỳ phần nào của mã thông báo sẽ làm mất hiệu lực chữ ký. Chỉ người nắm giữ khóa bí mật/riêng tư mới có thể tạo mã thông báo hợp lệ.

  4. Sử dụng JWT để xác thực

    Sau khi đăng nhập, máy chủ tạo JWT và gửi nó cho khách hàng. Máy khách bao gồm JWT trong tiêu đề Ủy quyền (Mã thông báo mang) cho các yêu cầu tiếp theo. Máy chủ xác minh chữ ký và kiểm tra ngày hết hạn — không cần tra cứu cơ sở dữ liệu.

Ví dụ

Cấu trúc JWT

đầu vào: Một JWT điển hình

đầu ra: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyMSIsImV4cCI6MTY5MzYxMjgwMH0.signature

Tiêu đề được giải mã

đầu vào: Phần đầu tiên được giải mã

đầu ra: {"alg": "HS256", "typ": "JWT"}

Tải trọng được giải mã

đầu vào: Phần thứ hai được giải mã

đầu ra: {"sub": "user1", "name": "Alice", "iat": 1693526400, "exp": 1693612800}

Các vấn đề thường gặp

  • Giải mã và xác minh — giải mã JWT (đọc nội dung của nó) KHÔNG chứng minh nó là xác thực. Luôn xác minh phía máy chủ chữ ký bằng khóa bí mật trước khi tin cậy các xác nhận quyền sở hữu.
  • Lưu trữ JWT trong localStorage —điều này khiến chúng có thể truy cập được bằng JavaScript, dễ bị tấn công XSS. Lưu trữ trong cookie httpOnly để bảo mật tốt hơn.
  • Mã thông báo tồn tại lâu dài —nếu mã thông báo bị đánh cắp, mã thông báo đó vẫn có hiệu lực cho đến khi hết hạn. Sử dụng mã thông báo truy cập có thời gian sử dụng ngắn (15-60 phút) cùng với mã thông báo làm mới cho các phiên dài.
  • Dữ liệu nhạy cảm trong tải trọng — bất kỳ ai có mã thông báo đều có thể đọc được tải trọng này (nó là Base64, không được mã hóa). Không bao giờ đặt mật khẩu, thẻ tín dụng hoặc bí mật vào trọng tải.

Mẹo

  • Luôn xác minh chữ ký JWT phía máy chủ trước khi tin cậy bất kỳ xác nhận quyền sở hữu nào — chỉ giải mã thôi thì không phải là xác thực.
  • Sử dụng mã thông báo truy cập có thời gian sử dụng ngắn (15-60 phút) cùng với mã thông báo làm mới trong các phiên dài để giảm thiểu thiệt hại do bị đánh cắp mã thông báo.
  • Lưu trữ JWT trong cookie httpOnly, Secure, SameSite thay vì localStorage để ngăn chặn các cuộc tấn công XSS.
  • Sử dụng Bộ giải mã JWT của chúng tôi để kiểm tra nội dung mã thông báo nhằm gỡ lỗi — mã thông báo của bạn không bao giờ rời khỏi trình duyệt.

Công cụ liên quan

Hướng dẫn liên quan

Tài liệu tham khảo