Tan Phat Media

JWT Expiration Checker

Kiểm tra thời hạn JWT token

Hợp tác ngay với Tấn Phát Digital

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.

Kiểm tra hạn JWT: đọc exp, iat, nbf và hiểu vì sao token bị từ chối

Công cụ giải mã phần header và payload của một JWT để cho biết token còn hiệu lực hay đã hết hạn, kèm đồng hồ đếm ngược tới giây. Nó đọc ba trường thời gian exp, iat và nbf, đổi từ dấu thời gian Unix sang giờ Việt Nam, và cho phép sao chép toàn bộ payload dưới dạng JSON đã định dạng.

Tính năng nổi bật

  • Giải mã header và payload của token ba phần ngăn cách bằng dấu chấm
  • Kết luận rõ ba trạng thái: còn hiệu lực, đã hết hạn, hoặc không có trường exp
  • Đồng hồ đếm ngược cập nhật mỗi giây theo dạng ngày, giờ, phút, giây còn lại
  • Đổi ba trường thời gian exp, iat và nbf từ dấu thời gian Unix sang giờ địa phương
  • Hiển thị toàn bộ payload để bạn xem các trường tùy biến như vai trò hay phạm vi quyền
  • Nút sao chép payload dạng JSON đã thụt lề, dán thẳng vào phiếu báo lỗi
  • Báo lỗi khi chuỗi không đúng định dạng ba phần hoặc không giải mã được
  • Giải mã ngay trong trình duyệt, token không được gửi tới máy chủ nào

Hết hạn là nguyên nhân số một khiến một lời gọi API trả về 401

Khi một lời gọi API đang chạy tốt bỗng trả về mã 401, câu hỏi đầu tiên cần trả lời không phải là mã nguồn sai ở đâu mà là token còn hạn không. Rất nhiều buổi gỡ lỗi kéo dài hàng giờ chỉ vì không ai kiểm tra điều đơn giản đó: token lưu trong biến môi trường của công cụ thử API đã hết hạn từ hôm trước, hoặc token trong bộ nhớ trình duyệt được cấp trước khi máy chủ đổi thời hạn. Dán token vào đây mất năm giây và loại bỏ ngay một nửa số giả thuyết. Ngoài lúc gỡ lỗi, công cụ còn hữu ích khi bạn cần biết chính sách thời hạn của một hệ thống đối tác: đọc hiệu số giữa iat và exp là biết token sống bao lâu, từ đó quyết định nên làm mới sau bao nhiêu phút thay vì chờ tới khi nhận lỗi rồi mới thử lại.

Lợi ích khi sử dụng

  • Loại trừ ngay giả thuyết token hết hạn trước khi đi sâu vào gỡ lỗi mã nguồn
  • Biết chính xác còn bao nhiêu thời gian để tính lịch làm mới token
  • Đọc được nội dung payload để kiểm tra vai trò và phạm vi quyền có đúng như mong đợi
  • Thấy được token không có trường exp, một cấu hình rủi ro cần báo lại cho phía cấp token
  • Token không rời khỏi trình duyệt nên an toàn hơn dán vào công cụ trực tuyến có máy chủ

Cách kiểm tra hạn của một JWT

  1. 1Lấy token cần kiểm tra, thường nằm ở tiêu đề Authorization sau chữ Bearer, hoặc trong bộ nhớ cục bộ của trình duyệt.
  2. 2Dán toàn bộ chuỗi vào ô nhập, nhớ bỏ chữ Bearer và khoảng trắng ở đầu vì chỉ phần token mới giải mã được.
  3. 3Bấm nút kiểm tra, ô trạng thái sẽ hiện còn hiệu lực hoặc đã hết hạn kèm thời gian còn lại đếm ngược.
  4. 4Đối chiếu ba mốc thời gian: iat là lúc cấp, nbf là mốc bắt đầu có hiệu lực, exp là mốc hết hạn.
  5. 5Bấm sao chép payload nếu bạn cần đính kèm nội dung token vào phiếu báo lỗi, nhớ che các trường nhạy cảm trước khi gửi cho người khác.

Ba trường thời gian trong JWT và ý nghĩa của chúng

Cả ba đều là dấu thời gian Unix, tức số giây kể từ nửa đêm ngày 1 tháng 1 năm 1970 theo giờ quốc tế. Trường iat ghi thời điểm token được cấp, dùng để biết token đã bao nhiêu tuổi và cũng là căn cứ để một số hệ thống từ chối token quá cũ dù chưa hết hạn. Trường exp ghi thời điểm hết hạn, sau mốc này máy chủ phải từ chối token. Trường nbf ghi thời điểm bắt đầu có hiệu lực, token dùng trước mốc này cũng bị từ chối; trường này ít gặp hơn nhưng rất hữu ích khi phát token trước cho một sự kiện sẽ mở vào giờ ấn định. Chú ý đơn vị là giây chứ không phải mili giây, đây là nguồn gốc của một lỗi kinh điển: lập trình viên lấy thời gian hiện tại theo mili giây rồi gán thẳng vào exp, khiến token có hạn ở một thời điểm xa hàng nghìn năm sau. Nếu bạn thấy công cụ báo còn hiệu lực với số ngày lớn bất thường, gần như chắc chắn phía cấp token đã nhầm đơn vị. Ba trường này đều là tùy chọn theo đặc tả, nên một token hợp lệ vẫn có thể không có trường nào trong số đó.

Công cụ này giải mã chứ không xác minh chữ ký

Đây là giới hạn quan trọng nhất cần hiểu. Một JWT gồm ba phần ngăn cách bằng dấu chấm: header, payload và chữ ký. Hai phần đầu chỉ được mã hóa Base64 theo biến thể an toàn cho địa chỉ mạng, ai cũng đọc ngược ra được mà không cần khóa. Phần thứ ba là chữ ký, dùng để chứng minh nội dung không bị sửa và token đúng là do bên phát hành cấp. Công cụ này chỉ đọc hai phần đầu, nó không kiểm tra chữ ký vì việc đó cần khóa bí mật hoặc khóa công khai của bên phát hành. Hệ quả thực tế: kết quả còn hiệu lực ở đây chỉ có nghĩa là mốc exp chưa qua, không có nghĩa là máy chủ sẽ chấp nhận token. Một token bị sửa tay phần payload vẫn hiện ra bình thường ở đây nhưng sẽ bị máy chủ từ chối ngay vì chữ ký không khớp. Ngược lại cũng đúng: token còn hạn và chữ ký hợp lệ vẫn có thể bị từ chối nếu đã bị thu hồi, nếu người dùng đổi mật khẩu, hoặc nếu máy chủ kiểm tra thêm các trường về đối tượng nhận và bên phát hành.

Đọc kết quả khi trạng thái là không có exp

Khi công cụ báo không có exp, nghĩa là payload thiếu hẳn trường hết hạn. Về mặt đặc tả thì token vẫn hợp lệ vì exp là trường tùy chọn, nhưng về mặt an toàn thì đây là một cấu hình đáng lo. Token không hết hạn nghĩa là ai lấy được nó sẽ dùng được mãi mãi, kể cả sau khi người dùng đã đăng xuất, trừ khi hệ thống có cơ chế thu hồi riêng bằng danh sách chặn. Trong các hệ thống thực tế, mức thời hạn thường gặp cho token truy cập là từ 5 phút tới 1 giờ, còn token làm mới thì dài hơn, từ vài ngày tới vài tuần, và được lưu ở nơi an toàn hơn. Nếu bạn kiểm tra token của một hệ thống nội bộ và thấy không có exp, đó là điều nên nêu ra khi rà soát bảo mật. Có một trường hợp ngoại lệ hợp lý: một số token dùng để định danh máy chủ với máy chủ trong mạng nội bộ khép kín được cố tình phát không thời hạn và quản lý bằng cách khác, nhưng đó phải là quyết định có cân nhắc chứ không phải sơ suất.

Lệch giờ giữa máy khách và máy chủ

Công cụ so mốc exp với đồng hồ trên máy bạn, còn máy chủ so với đồng hồ của nó. Nếu hai đồng hồ lệch nhau, kết luận có thể khác nhau. Đây không phải chuyện hiếm: máy tính không đồng bộ giờ qua mạng, máy ảo mới khởi động lại, hoặc thiết bị di động vừa đổi múi giờ đều có thể lệch vài giây tới vài phút. Với token thời hạn ngắn kiểu 5 phút, lệch một phút là đủ khiến bạn thấy còn hạn trong khi máy chủ đã từ chối. Vì lý do này, phần lớn thư viện kiểm tra JWT cho phép cấu hình một biên độ dung sai, thường là 30 tới 60 giây, để bỏ qua chênh lệch nhỏ. Khi gỡ lỗi mà thấy công cụ báo còn vài giây nhưng máy chủ vẫn trả 401, việc đầu tiên nên làm là kiểm tra đồng hồ máy mình có được đồng bộ hay không. Cũng lưu ý các mốc thời gian hiển thị ở đây đã đổi sang giờ địa phương của thiết bị, nên nếu bạn so với nhật ký máy chủ ghi theo giờ quốc tế thì phải cộng trừ bảy tiếng cho múi giờ Việt Nam.

Lưu ý an toàn khi thao tác với token thật

Một token truy cập còn hạn có giá trị hệt như mật khẩu: ai cầm được nó sẽ hành động thay bạn trong hệ thống cho tới khi nó hết hạn. Vì thế có mấy nguyên tắc cần giữ. Thứ nhất, chỉ dán token vào công cụ xử lý phía trình duyệt như công cụ này, và bạn có thể tự kiểm chứng bằng cách mở tab mạng trong bảng công cụ dành cho nhà phát triển để thấy không có yêu cầu nào được gửi đi khi bấm kiểm tra. Thứ hai, khi cần chia sẻ token cho đồng nghiệp để tái hiện lỗi, hãy dùng token của tài khoản thử nghiệm chứ đừng dùng token của tài khoản thật, và tốt hơn nữa là chỉ gửi phần payload đã che các trường nhạy cảm. Thứ ba, đừng dán token vào phiếu báo lỗi công khai, tin nhắn nhóm hay ảnh chụp màn hình gửi ra ngoài; nếu lỡ làm vậy thì việc cần làm ngay là thu hồi phiên đó. Thứ tư, nhớ rằng payload của JWT không phải chỗ để giấu thông tin, mọi thứ trong đó đều đọc được, nên không bao giờ đặt số căn cước, số thẻ hay bất kỳ dữ liệu nhạy cảm nào vào payload.

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

Trường exp trong JWT tính bằng đơn vị gì?

Bằng giây kể từ nửa đêm ngày 1 tháng 1 năm 1970 theo giờ quốc tế, tức dấu thời gian Unix. Lỗi kinh điển là gán nhầm giá trị theo mili giây, khiến token có hạn ở một thời điểm xa hàng nghìn năm sau. Nếu thấy số ngày còn lại lớn bất thường, gần như chắc chắn phía cấp token đã nhầm đơn vị.

Công cụ có kiểm tra chữ ký của token không?

Không. Nó chỉ giải mã header và payload, vốn chỉ được mã hóa Base64 chứ không được bảo vệ. Việc xác minh chữ ký cần khóa bí mật hoặc khóa công khai của bên phát hành. Vì vậy kết quả còn hiệu lực chỉ có nghĩa là mốc exp chưa qua, không bảo đảm máy chủ sẽ chấp nhận token.

Token còn hạn mà máy chủ vẫn trả về 401, vì sao?

Có thể do chữ ký không khớp, token đã bị thu hồi, người dùng đã đổi mật khẩu, các trường về đối tượng nhận hoặc bên phát hành không đúng với cấu hình máy chủ, hoặc đồng hồ máy bạn lệch so với đồng hồ máy chủ. Công cụ này chỉ loại trừ được nguyên nhân hết hạn.

Khác nhau giữa iat, nbf và exp là gì?

Trường iat ghi lúc token được cấp, nbf ghi mốc bắt đầu có hiệu lực, exp ghi mốc hết hạn. Token dùng trước nbf hoặc sau exp đều bị từ chối. Hiệu số giữa iat và exp cho bạn biết chính sách thời hạn của hệ thống, từ đó tính được nên làm mới token sau bao lâu.

Token không có trường exp thì sao?

Về đặc tả vẫn hợp lệ vì exp là trường tùy chọn, nhưng về an toàn thì đáng lo: ai lấy được token sẽ dùng được mãi, kể cả sau khi người dùng đăng xuất, trừ khi hệ thống có danh sách thu hồi riêng. Đây là điểm nên nêu ra khi rà soát bảo mật một hệ thống nội bộ.

Thời hạn bao nhiêu là hợp lý cho token truy cập?

Mức thường gặp là từ 5 phút tới 1 giờ cho token truy cập, kết hợp với một token làm mới có thời hạn dài hơn từ vài ngày tới vài tuần và được lưu ở nơi an toàn hơn. Thời hạn ngắn giới hạn thiệt hại khi token bị lộ, còn token làm mới giữ cho người dùng không phải đăng nhập lại liên tục.

Vì sao công cụ báo còn vài giây mà máy chủ đã từ chối?

Nhiều khả năng do lệch đồng hồ giữa máy bạn và máy chủ. Máy không đồng bộ giờ qua mạng có thể lệch vài giây tới vài phút, đủ để gây khác biệt với token thời hạn ngắn. Phần lớn thư viện kiểm tra JWT có biên độ dung sai khoảng 30 tới 60 giây để xử lý chuyện này.

Vì sao dán token vào lại báo token không hợp lệ?

Thường vì chuỗi dán vào còn kèm chữ Bearer và khoảng trắng ở đầu, hoặc bị thiếu một phần do sao chép chưa hết, hoặc bị chèn ký tự xuống dòng. Một JWT phải có đúng ba phần ngăn cách bằng hai dấu chấm. Hãy dán riêng phần token và kiểm tra không có khoảng trắng thừa.

Có thể sửa payload rồi dùng token đó không?

Không. Sửa payload sẽ làm chữ ký không còn khớp và máy chủ từ chối ngay. Công cụ này vẫn hiển thị nội dung đã sửa vì nó chỉ giải mã chứ không xác minh, nhưng điều đó không có nghĩa token dùng được. Đây cũng là lý do không được tin payload chưa xác minh chữ ký ở phía máy chủ.

Có nên lưu thông tin nhạy cảm trong payload không?

Tuyệt đối không. Payload chỉ được mã hóa Base64, ai cầm token cũng đọc được toàn bộ nội dung trong vài giây mà không cần khóa. Không đặt số căn cước, số thẻ, mật khẩu hay bất kỳ dữ liệu cá nhân nhạy cảm nào vào đó, chỉ nên đặt định danh và các trường phân quyền tối thiểu.

Token tôi dán vào có bị gửi đi đâu không?

Không. Việc tách chuỗi và giải mã Base64 chạy bằng JavaScript ngay trong trình duyệt. Bạn có thể tự kiểm chứng bằng cách mở tab mạng trong bảng công cụ dành cho nhà phát triển và thấy không có yêu cầu nào được gửi khi bấm kiểm tra.

Giờ hiển thị trong kết quả theo múi giờ nào?

Theo giờ địa phương của thiết bị bạn đang dùng, tức giờ Việt Nam nếu máy đặt múi giờ trong nước. Nhật ký máy chủ thường ghi theo giờ quốc tế, nên khi đối chiếu hai bên bạn cần cộng trừ bảy tiếng để tránh kết luận sai về thời điểm token hết hạn.

Từ khóa liên quan

  • kiểm tra hạn jwt
  • jwt hết hạn
  • giải mã jwt online
  • jwt decode tiếng việt
  • exp iat nbf trong jwt
  • jwt expiration checker
  • token hết hạn lỗi 401
  • thời hạn access token bao lâu
  • refresh token là gì
  • jwt có mã hóa không
  • xác minh chữ ký jwt
  • cấu trúc jwt header payload signature
  • unix timestamp là gì
  • lệch đồng hồ máy chủ jwt
  • bảo mật khi lưu jwt
  • jwt không có exp
  • đọc payload jwt
  • công cụ debug jwt
  • kiểm tra token api miễn phí
  • jwt an toàn cho url base64url

Công cụ Developer Tools liên quan

.env Generator

Tạo file .env và .env.example cho dự án.

.gitignore Generator

Tạo .gitignore cho Node.js, Python, Java.

API Mock Generator

Tạo mock JSON data cho API testing.

API Response Formatter

Format và phân tích API response.

API Tester

Test REST API: GET, POST, PUT, DELETE.

Postman Alternative - API Testing Tool Online với Collections, Environment & File Upload

Postman Alternative miễn phí - Test APIs với Collections, Multiple Environments, Pre-request Scripts, Collection Runner, File Upload (form-data), Tests/Assertions, Code Generation (cURL, JS, Python, Node.js). Browser-based, không cần cài đặt. Save requests, export/import collections, auto-save history. Hỗ trợ Bearer Token, Basic Auth, API Key. Hoàn hảo cho API development và testing.

Swagger API Tester - Test API với OpenAPI/Swagger Spec & Authentication Online

Swagger API Tester miễn phí - Import OpenAPI/Swagger specification và test API endpoints với đầy đủ authentication (Bearer Token/JWT, Basic Auth, API Key). Hỗ trợ OpenAPI 3.0, Swagger 2.0, auto-parse endpoints, parameters, request body. Giao diện như Swagger UI với color-coded methods, grouped endpoints, real-time testing. Hoàn hảo cho API development, testing, debugging secured APIs.

Base Converter

Chuyển đổi Binary, Hex, Base32.

Base64 Encoder

Mã hóa/giải mã Base64.

Binary Converter

Chuyển đổi Decimal, Binary, Hex.

Box Shadow Generator

Tạo CSS box-shadow trực quan.

Chmod Calculator

Tính quyền file Linux.

Dịch vụ của Tấn Phát Digital

Đang xây sản phẩm và cần thêm người làm phần nặng?

Gói giải pháp doanh nghiệp

Nền tảng custom cho ngân hàng, y tế và sàn B2B, chuẩn ISO 27001, GDPR, PCI-DSS, SLA 99.99%.

Từ 50.000.000đXem chi tiết →

Dịch vụ phát triển Blockchain & Web3

Smart contract, dApp và NFT marketplace đa chuỗi, audit bảo mật đầy đủ trước khi lên mainnet.

Từ 50.000.000đXem chi tiết →

Dịch vụ thiết kế website tại Hồ Chí Minh

Website doanh nghiệp, bán hàng và đặt lịch, chuẩn SEO ngay từ cấu trúc, tốc độ tải dưới 3 giây.

Từ 5.000.000đXem chi tiết →

Dịch vụ thiết kế landing page

Trang đích riêng cho từng chiến dịch quảng cáo, tỷ lệ chuyển đổi 3–8%, bàn giao trong 5–21 ngày.

Từ 3.000.000đXem chi tiết →

Tư vấn và báo giá miễn phí trong 24 giờ. Xem toàn bộ dịch vụ

Zalo
Facebook
Tấn Phát Digital
Zalo
Facebook