Giải mã & ký JWT API

Giải mã mọi JWT, kiểm tra hạn dùng và xác thực chữ ký bằng secret, PEM hoặc JWK – hoặc ký token mới với HS256/384/512, RS, PS, ES.

POSThttps://apibox.io.vn/v1/jwt
Bảo mật & Mã hoá▶ Dùng thử online

API JWT giúp giải mã, xác thực và tạo JSON Web Token. Ở chế độ decode (mặc định), bạn gửi token – tiền tố Bearer sẽ được bỏ tự động – và nhận về header, payload dạng JSON cùng các claim dễ đọc: issued_at, expires_at, not_before theo định dạng ISO, và token đã expired (hết hạn) hay not_yet_valid (chưa có hiệu lực).

Thêm secret (khoá HMAC dùng chung, hoặc public key RSA/EC dạng PEM PUBLIC KEY hay JWK) để xác thực chữ ký: signature_valid cho biết chữ ký có khớp không, còn valid chỉ là true khi chữ ký đúng và token đang trong thời hạn hiệu lực. Hỗ trợ HS256/384/512, RS256/384/512, PS256/384/512 và ES256/384/512.

Ở chế độ sign (action=sign, hoặc chỉ cần gửi payload), API tạo token đã ký từ payload JSON với thuật toán algorithm (mặc định HS256) và secret (khoá HMAC, hoặc PEM PRIVATE KEY PKCS#8 / JWK private cho thuật toán bất đối xứng). expires_in (giây) tự thêm claim iat và exp. Endpoint chỉ nhận POST để token và khoá không bao giờ nằm trong URL.

Tham số

TênVị tríKiểuBắt buộcMặc định
actionbodystringkhôngdecodedecode hoặc sign. Mặc định là sign nếu có gửi payload.
tokenbodystringkhôngdecode: JWT cần giải mã (chấp nhận tiền tố Bearer ).
secretbodystringkhôngKhoá HMAC, hoặc khoá PEM / JWK (public key để xác thực, private key PKCS#8 để ký). Tên khác key khi decode. Bắt buộc khi ký.
payloadbodyobjectkhôngsign: đối tượng JSON chứa các claim (hoặc chuỗi JSON).
algorithmbodystringkhôngHS256sign: HS256/384/512, RS256/384/512, PS256/384/512, ES256/384/512.
expires_inbodynumberkhôngsign: thời gian sống tính bằng giây; tự thêm claim iat và exp.

Ví dụ

curl -X POST "https://apibox.io.vn/v1/jwt" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3OTQyODczMTQsImV4cCI6MTc5NDI5MDkxNCwic3ViIjoidXNlcl8xMjMiLCJyb2xlIjoiYWRtaW4ifQ.Dle3BtqLL449n-RirNMbP23azwGNJ57klSgX2-x1rH4","secret":"my-secret"}'

Kết quả trả về

{
  "header": {
    "alg": "HS256",
    "typ": "JWT"
  },
  "payload": {
    "iat": 1794287314,
    "exp": 1794290914,
    "sub": "user_123",
    "role": "admin"
  },
  "claims": {
    "issued_at": "2026-11-10T05:08:34.000Z",
    "expires_at": "2026-11-10T06:08:34.000Z",
    "not_before": null,
    "expired": false,
    "not_yet_valid": false
  },
  "signature_valid": true,
  "valid": true
}

Ứng dụng

  • Debug lỗi đăng nhập bằng cách xem claim trong access token
  • Tìm nguyên nhân token bị từ chối: hết hạn, chưa hiệu lực hay sai chữ ký
  • Tạo token test cho môi trường dev và kiểm thử tích hợp
  • Xác thực token từ nhà cung cấp định danh bên thứ ba bằng public key

Hỏi đáp

Dán token vào đây có an toàn không?

Token và secret chỉ được xử lý trong bộ nhớ trên Cloudflare Workers, không được lưu lại. Dù vậy, hãy cẩn trọng với secret production: ưu tiên token test và đổi ngay secret nếu nghi bị lộ.

Xác thực token RS256 thế nào?

Gửi POST {"token": "eyJ...", "secret": "-----BEGIN PUBLIC KEY-----..."}. Public key dạng JWK (chuỗi JSON) cũng dùng được. Thuật toán được đọc từ header của token.

Vì sao "valid" trả về null?

Vì bạn chưa gửi secret hoặc key nên không thể kiểm tra chữ ký. Token chỉ được giải mã; signature_valid và valid sẽ là null cho đến khi có khoá.

API liên quan

Bắt đầu với 1.000 request miễn phí mỗi tháng. Nhận API key miễn phí →