Bộ tạo JWT

Tạo JWT

Hãy tạo và ký một token JWT ngay trong trình duyệt của bạn. Nhập các yêu cầu đối với dữ liệu tải (các giá trị tiêu chuẩn như sub, aud, exp… cùng bất kỳ thông tin tùy chỉnh nào), chọn thuật toán (HS256 sử dụng mật khẩu chung hoặc RS256/ES256 sử dụng khóa riêng), và công cụ sẽ tự động tạo ra token gồm ba phần. Phương pháp này rất hữu ích cho phát triển cục bộ, kiểm thử tải và tái tạo các vấn đề liên quan đến xác thực.

Cách tạo JWT

  1. 1

    Nhập dữ liệu tải trọng (payload)

    Các yêu cầu tiêu chuẩn (`sub`, `iss`, `aud`, `exp`, `iat`, `nbf`) cùng với bất kỳ yêu cầu tùy chỉnh nào ứng dụng của bạn cần thiết.

  2. 2

    Chọn thuật toán

    HS256/384/512 với mật khẩu chung, hoặc RS256/ES256 với khóa riêng ở định dạng PEM.

  3. 3

    Cung cấp khóa

    Đặt văn bản bí mật chung cho HMAC hoặc dán khóa riêng tư cho RSA/ECDSA; cả hai đều được lưu trong trình duyệt của bạn.

  4. 4

    Tạo ra

    Kết quả là token có dấu. Hãy sao chép nó, sử dụng trong các bài kiểm thử và giải mã bằng công cụ JWT Decoder để kiểm tra.

Lượng dữ liệu tiêu chuẩn dành cho token người dùng đã được xác thực

{
  "iss": "https://auth.example.com",
  "aud": "api.example.com",
  "sub": "user_12345",
  "iat": 1713398400,
  "nbf": 1713398400,
  "exp": 1713402000,
  "jti": "3c7c7e14-2de4-41f0-bf09-1eb5cfad4c01",
  "scope": "read:profile write:posts"
}

Lựa chọn thuật toán: HMAC so với thuật toán không đối xứng

Algoritma Loại khóa Áp dụng khi
HS256 Mật chia sẻ 256 bit Một khối thống nhất có khả năng tự ký và tự xác thực
HS384/512 Mật mã dài hơn Tương tự như HS256, mạnh hơn
RS256 RSA 2048+ Người phát hành ký; nhiều dịch vụ xác minh bằng khóa công cộng
ES256 ECDSA P-256 Tương tự như RS256 nhưng chữ ký có kích thước nhỏ hơn
EdDSA Ed25519 Phương pháp xác minh bất đối xứng nhanh nhất, sử dụng khóa nhỏ nhất

Độ mạnh của khóa

  • Bí mật HMAC phải có độ entropy ít nhất bằng kích thước đầu ra của thuật toán. HS256 yêu cầu 256 bit ngẫu nhiên (32 byte); nếu ít hơn thì có thể bị bẻ khóa bằng phương pháp brute-force.
  • Khóa RSA phải có độ dài tối thiểu là 2048 bit; đối với các token có thời gian sử dụng lâu dài, nên dùng độ dài 3072 hoặc 4096 bit.
  • ECDSA (ES256) cung cấp mức độ bảo mật tương đương với RSA 3072 nhưng sử dụng khóa nhỏ hơn nhiều và quá trình ký nhanh hơn đáng kể.

Hướng dẫn về thời hạn sử dụng

Loại token Thời gian sử dụng điển hình của exp
Token truy cập 5–60 phút
Token cập nhật Từ ngày đến tuần
Khôi phục mật khẩu 5–15 phút
Xác thực email 24 giờ
Từ dịch vụ này đến dịch vụ khác 1–5 phút (thời gian ngắn)

Token có thời hạn ngắn kèm chức năng tự động làm mới là mô hình hiện đại. Trong khi đó, các token truy cập có tuổi thọ dài rất khó bị thu hồi sau khi bị xâm phạm.

Các lỗi phổ biến

  • Tái sử dụng bí mật kiểm thử trong môi trường sản xuất. Bộ tạo sẽ đánh dấu bí mật HS256 và JWT đầu ra là “chỉ dùng cho kiểm thử” nếu bí mật đó có vẻ yếu. Hãy tin vào cảnh báo này.
  • Ký mà không có exp. Một JWT không có hạn sử dụng sẽ có hiệu lực vĩnh viễn. Luôn thiết lập exp trừ khi bạn có lý do rất chính đáng và có danh sách thu hồi.
  • Sử dụng alg từ phần tiêu đề ở phía xác minh. Luôn đưa các thuật toán vào danh sách trắng ở phía xác minh; đừng làm theo yêu cầu của token.
  • Dán khóa riêng tư thật vào đây. Bộ tạo này chạy trực tiếp trong trình duyệt của bạn; tuy nhiên, hãy coi khóa riêng tư như thông tin mật: hãy dùng khóa thử thay vì khóa sản xuất.

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

Không. Việc ký chữ ký được thực hiện trực tiếp trong trình duyệt thông qua Web Crypto API. Các khóa không bao giờ rời khỏi thiết bị của bạn. Tuy nhiên, đối với các khóa dùng trong môi trường sản xuất, hãy tạo và ký chữ ký trong một môi trường kiểm soát – chứ không phải trong trình duyệt.

HS256 phù hợp với các hệ thống đơn khối trong trường hợp cùng sử dụng và xác minh các dấu ấn dịch vụ giống nhau. RS256 hoặc ES256 là lựa chọn tốt hơn khi tổ chức phát hành và tổ chức xác minh tách biệt nhau – các khóa công cộng có thể được chia sẻ mà không làm lộ khóa ký.

Thời gian xử lý thường vào khoảng 5–15 phút đối với các token truy cập. Hãy sử dụng token làm mới có thời hạn hoạt động dài hơn để đảm bảo trải nghiệm người dùng liền mạch. Không bao giờ phát hành JWT mà không có yêu cầu exp.

Công cụ hỗ trợ phát ra mã alg: none nhằm kiểm thử có chủ đích các token bị lỗi hoặc không được ký, kèm theo cảnh báo nổi bật. Không bao giờ chấp nhận những token này trong mã sản xuất.

Công cụ liên quan

Công cụ này có phiên bản bằng các ngôn ngữ khác