Giải mã JSON Web Token online
Công cụ giải mã JWT (JSON Web Token) online miễn phí của Tấn Phát Digital dành cho developers. Decode và hiển thị 3 phần của JWT: Header (algorithm, type), Payload (claims, user data), Signature. Kiểm tra token hết hạn với exp claim - hiển thị thời gian còn lại hoặc đã hết hạn bao lâu. Parse các standard claims: iss (issuer), sub (subject), aud (audience), exp (expiration), nbf (not before), iat (issued at), jti (JWT ID). Format JSON đẹp với syntax highlighting, dễ đọc. Copy từng phần với một click. Xử lý 100% trên trình duyệt, không gửi token lên server, bảo mật tuyệt đối cho tokens nhạy cảm. Hữu ích cho debugging API, kiểm tra authentication, học về JWT.
JWT (JSON Web Token) là chuẩn mở (RFC 7519) để truyền thông tin an toàn giữa các bên dưới dạng JSON object. JWT được sử dụng rộng rãi cho: Authentication - sau khi login, server trả về JWT chứa user info. Authorization - mỗi request gửi kèm JWT để server biết user có quyền gì. Information Exchange - truyền data đã được ký số. Developers cần decode JWT để: Debug authentication issues - xem token chứa gì, đã hết hạn chưa. Verify user claims - kiểm tra roles, permissions trong token. Understand API responses - xem server trả về những gì. Learn JWT structure - hiểu cách JWT hoạt động. Công cụ này giúp decode nhanh chóng mà không cần viết code.
JWT gồm 3 phần ngăn cách bởi dấu chấm (.). HEADER: Chứa metadata - 'alg' (algorithm: HS256, RS256, ES256) và 'typ' (type: JWT). Được Base64Url encode. PAYLOAD: Chứa claims - thông tin về entity (user) và metadata. Có 3 loại claims: Registered (iss, sub, aud, exp, nbf, iat, jti), Public (định nghĩa trong IANA), Private (custom claims). Cũng được Base64Url encode. SIGNATURE: Được tạo bằng cách ký (Header + Payload) với secret key (HS256) hoặc private key (RS256). Dùng để verify token không bị sửa đổi. Lưu ý: JWT chỉ được SIGNED, không được ENCRYPTED. Ai cũng có thể decode và đọc payload. Không đặt sensitive data (password, credit card) trong JWT.
iss (Issuer): Ai tạo token - thường là domain của auth server. sub (Subject): Token này về ai - thường là user ID. aud (Audience): Token dành cho ai - thường là API domain. exp (Expiration): Thời điểm hết hạn - Unix timestamp (giây). nbf (Not Before): Token chưa valid trước thời điểm này. iat (Issued At): Thời điểm tạo token. jti (JWT ID): Unique identifier của token - dùng để prevent replay attacks. Custom claims: Bạn có thể thêm bất kỳ claims nào như 'role', 'permissions', 'email', 'name'...
Header: Chứa algorithm (HS256, RS256, ES256...) và type (JWT). Được Base64Url encode. Payload: Chứa claims - user data, expiration, issuer, custom data. Cũng được Base64Url encode. Signature: Chữ ký số tạo bằng cách ký (Header.Payload) với secret/private key. Dùng để verify token không bị tamper.
Tool này xử lý 100% trên browser, token KHÔNG được gửi lên server. Bạn có thể verify bằng Network tab trong DevTools. Tuy nhiên, lưu ý: JWT payload chỉ được Base64 encode, KHÔNG được encrypt. Ai có token đều có thể decode và đọc payload. Đây là by design - JWT dùng để verify, không phải để encrypt. Không bao giờ đặt sensitive data (password, credit card) trong JWT.
exp (expiration): Unix timestamp (giây) - thời điểm token hết hạn. Sau thời điểm này, token không còn valid. iat (issued at): Unix timestamp - thời điểm token được tạo. Dùng để tính tuổi của token. nbf (not before): Unix timestamp - token chưa valid trước thời điểm này. Ít được dùng. Ví dụ: exp=1700000000 nghĩa là token hết hạn vào Nov 14, 2023 22:13:20 UTC.
Verify signature cần: Secret key (với HS256, HS384, HS512) - symmetric, cùng key để sign và verify. Public key (với RS256, ES256) - asymmetric, private key để sign, public key để verify. Client-side thường không có secret key (nếu có thì ai cũng biết secret). Public key có thể expose nhưng cần setup. Tool này chỉ DECODE (đọc payload), không VERIFY (kiểm tra signature). Server-side mới verify được.
HS256 (HMAC-SHA256): Symmetric - dùng cùng secret key để sign và verify. Nhanh hơn, đơn giản hơn. Phù hợp khi cùng service sign và verify. RS256 (RSA-SHA256): Asymmetric - private key để sign, public key để verify. Chậm hơn, phức tạp hơn. Phù hợp khi khác service verify (public key có thể share). Chọn RS256 khi cần share public key, HS256 cho internal services.
JWT có thể bị tấn công nếu: Secret key yếu hoặc bị lộ - attacker có thể tạo fake tokens. Algorithm confusion - server accept 'none' algorithm. Token không có expiration - bị đánh cắp thì dùng mãi. Stored insecurely - XSS có thể đánh cắp token từ localStorage. Best practices: Dùng strong secret (256+ bits), set short expiration, store in httpOnly cookies, validate algorithm server-side.
Access token: Short-lived (15 phút - 1 giờ), dùng để access resources, gửi trong mỗi API request. Refresh token: Long-lived (7-30 ngày), dùng để lấy access token mới khi hết hạn, stored securely (httpOnly cookie). Flow: Access token hết hạn → gửi refresh token → nhận access token mới. Nếu refresh token hết hạn → user phải login lại. Cả hai đều có thể là JWT.
localStorage: Dễ dùng với JavaScript, nhưng vulnerable với XSS attacks. Cookies (httpOnly, secure, sameSite): Không accessible bằng JavaScript nên safe hơn với XSS, nhưng cần handle CSRF. Recommendation: Dùng httpOnly cookies cho production. Nếu dùng localStorage, đảm bảo app không có XSS vulnerabilities. Refresh token luôn nên ở httpOnly cookie.
Chúng tôi không chỉ thiết kế website, mà còn giúp doanh nghiệp xây dựng thương hiệu số mạnh mẽ. Cung cấp dịch vụ thiết kế website trọn gói từ thiết kế đến tối ưu SEO. Hãy liên hệ ngay với Tấn Phát Digital để cùng tạo nên những giải pháp công nghệ đột phá, hiệu quả và bền vững cho doanh nghiệp của bạn tại Hồ Chí Minh.
Tạo file .env và .env.example cho dự án.
Tạo .gitignore cho Node.js, Python, Java.
Tạo mock JSON data cho API testing.
Format và phân tích API response.
Test REST API: GET, POST, PUT, DELETE.
Chuyển đổi Binary, Hex, Base32.
Mã hóa/giải mã Base64.
Chuyển đổi Decimal, Binary, Hex.
Tạo CSS box-shadow trực quan.
Tính quyền file Linux.
Kiểm tra WCAG accessibility.
Tạo bảng màu ngẫu nhiên.