Chọn ngôn ngữ

Công cụ giải mã JSON Web Token

Giải mã chuỗi JWT trực tiếp trên trình duyệt. Xem chi tiết header, payload và chuyển đổi thời gian thực tế dễ đọc mà không cần gửi dữ liệu máy chủ.

Mehmet Demiray Xuất bản Cập nhật
Chia sẻ
Chuyển đổi các claim exp, iat và nbf thành ngày tháng dễ đọc

Cấu trúc cơ bản của một JSON Web Token

Một JWT tiêu chuẩn bao gồm ba phần được phân tách rõ ràng bằng dấu chấm: Header, Payload và Signature. Cấu trúc tổng thể có dạng chuỗi ký tự liên tục. Mỗi phần đều được mã hóa theo chuẩn Base64Url để đảm bảo tính an toàn và tương thích khi truyền tải qua các giao thức mạng như HTTP headers hoặc tham số URL. Phần Header thường chứa thông tin mô tả về loại token và thuật toán ký mã hóa được sử dụng, ví dụ như HMAC SHA256 hoặc RSA. Phần Payload chứa các dữ liệu thực tế mà máy chủ muốn truyền tải, thường được gọi là claims. Các dữ liệu này có thể bao gồm định danh người dùng, danh sách quyền truy cập hoặc thời gian hiệu lực của phiên đăng nhập. Phần Signature được tạo ra bằng cách lấy Header và Payload đã mã hóa, kết hợp với một khóa bí mật và ký bằng thuật toán đã chỉ định ban đầu. Công cụ Giải mã JWT giúp lập trình viên nhanh chóng tách và phân tích các thông tin này bằng cách thực hiện giải mã Base64 cho hai phần đầu tiên, sau đó hiển thị lại dưới cấu trúc định dạng JSON trực quan và dễ đọc.

Giải thích các trường dữ liệu tiêu chuẩn

Trong phần Payload của JWT, dữ liệu được tổ chức thành các trường gọi là claims. Các tổ chức công nghệ đã định nghĩa sẵn một bộ các trường tiêu chuẩn để đảm bảo tính nhất quán khi tích hợp giữa nhiều hệ thống phần mềm khác nhau. Trường iss đại diện cho tổ chức hoặc máy chủ đã phát hành token. Trường sub dùng để định danh chủ thể của token, thường là mã ID của người dùng lưu trong cơ sở dữ liệu. Trường aud xác định đối tượng mà token này hướng tới, giúp hệ thống nhận token kiểm tra xem yêu cầu có hợp lệ với dịch vụ của mình hay không. Trường exp quy định thời điểm token hết hạn, được tính bằng tổng số giây kể từ mốc thời gian Unix Epoch vào ngày 1 tháng 1, 1970. Trường iat ghi nhận thời điểm token được phát hành. Trường nbf quy định mốc thời gian mà token bắt đầu có hiệu lực, nếu hệ thống nhận được token trước thời điểm này thì yêu cầu sẽ bị từ chối. Công cụ Giải mã JWT sẽ tự động chuyển đổi các giá trị thời gian Unix như exp, iatnbf thành định dạng ngày giờ chuẩn xác, giúp bạn tiết kiệm thời gian phân tích thay vì phải tính toán thủ công.

Sự khác biệt giữa giải mã và xác thực JWT

Nhiều kỹ sư phần mềm thường nhầm lẫn giữa việc giải mã và xác thực một token. Quá trình giải mã đơn thuần là việc dịch ngược chuỗi ký tự đã qua mã hóa Base64 thành văn bản thuần túy ban đầu. Bất kỳ cá nhân nào có được chuỗi JWT đều có thể đọc được toàn bộ nội dung bên trong Header và Payload mà không cần nắm giữ khóa bí mật. Công cụ Giải mã JWT thực hiện chính xác công việc này để hỗ trợ quá trình kiểm tra dữ liệu ở phía máy khách. Ngược lại, xác thực là quá trình kiểm tra phần Signature để đảm bảo rằng token được tạo ra bởi một nguồn đáng tin cậy và nội dung bên trong chưa từng bị chỉnh sửa bởi bên thứ ba. Thao tác này bắt buộc phải có khóa bí mật đối với thuật toán đối xứng hoặc khóa công khai đối với thuật toán bất đối xứng. Vì công cụ này chỉ đọc dữ liệu ở trình duyệt và không yêu cầu cung cấp khóa bí mật, bạn tuyệt đối không được tin tưởng sử dụng các dữ liệu vừa giải mã để cấp quyền truy cập nếu chưa thực hiện bước xác thực toàn vẹn tại máy chủ backend.

Gỡ lỗi các sự cố xác thực phổ biến

Khi tích hợp và làm việc với các API, lỗi xác thực thường trả về mã lỗi HTTP 401 là tình trạng diễn ra rất thường xuyên. Việc sử dụng công cụ Giải mã JWT là bước chẩn đoán đầu tiên cực kỳ hiệu quả để tìm ra nguyên nhân gốc rễ. Một trong những lý do phổ biến nhất khiến hệ thống từ chối yêu cầu là token đã hết hạn sử dụng. Bạn có thể kiểm tra trực tiếp trường exp để xem thời gian hiệu lực đã trôi qua hay chưa. Lỗi sai đối tượng cũng rất hay gặp khi phát triển hệ thống vi dịch vụ. Nếu trường aud trong token không khớp với định danh của dịch vụ đang xử lý yêu cầu, token sẽ bị hệ thống từ chối ngay lập tức. Độ lệch thời gian giữa các máy chủ cũng là một nguyên nhân tiềm ẩn khiến một token vừa được cấp phát bị coi là chưa có hiệu lực do vi phạm trường nbf hoặc bị nhận diện là đã hết hạn. Bằng cách phân tích trực quan các trường dữ liệu này trên giao diện, lập trình viên có thể nhanh chóng khoanh vùng và khắc phục các vấn đề liên quan đến phân quyền thay vì phải đọc lại toàn bộ mã nguồn.

Các câu hỏi thường gặp về xử lý JWT

Việc giải mã một JWT hoàn toàn không giống với việc xác thực nó. Giải mã chỉ là thao tác chuyển đổi định dạng hiển thị của chuỗi ký tự để con người có thể đọc hiểu được nội dung bên trong. Xác thực là quá trình áp dụng các thuật toán mật mã học để xác nhận tính toàn vẹn và nguồn gốc hợp lệ của dữ liệu. Để biết khi nào token của mình hết hạn, bạn chỉ cần dán chuỗi ký tự vào công cụ. Hệ thống sẽ tự động trích xuất trường exp nằm trong phần Payload và hiển thị ngày giờ hết hạn chi tiết theo đúng múi giờ địa phương của bạn. Công cụ Giải mã JWT được thiết kế để xử lý toàn bộ dữ liệu cục bộ ngay trên trình duyệt web của người dùng. Token không bao giờ được truyền tải đến bất kỳ máy chủ bên ngoài nào. Việc sử dụng công cụ này hoàn toàn an toàn, tuy nhiên theo các nguyên tắc bảo mật thông tin cơ bản, bạn vẫn nên hạn chế sao chép và dán các token có chứa dữ liệu nhạy cảm của môi trường thực tế. Nếu token của bạn không thể giải mã được, nguyên nhân thường xuất phát từ việc chuỗi ký tự bị thiếu các dấu chấm phân cách cấu trúc, quá trình sao chép bị thiếu sót hoặc chuỗi chứa các ký tự không tuân thủ đúng chuẩn định dạng.

Những câu chúng tôi trả lời nhiều nhất.

Giải mã một JWT có giống với việc xác thực nó không?

Hoàn toàn khác nhau. Công cụ Giải mã JWT chỉ đơn thuần chuyển đổi chuỗi base64url thành định dạng JSON dễ đọc để bạn xem nội dung bên trong. Nó không kiểm tra chữ ký của token. Để đảm bảo token chưa bị chỉnh sửa và thực sự do hệ thống cấp phát, bạn bắt buộc phải xác thực nó bằng một khóa bí mật ở phía backend.

Làm thế nào để biết token của tôi khi nào hết hạn?

Sau khi dán chuỗi token vào công cụ Giải mã JWT, bạn hãy tìm trường exp trong phần payload. Công cụ của chúng tôi sẽ tự động chuyển đổi giá trị thời gian Unix này thành định dạng ngày giờ chuẩn để bạn dễ dàng đối chiếu. Nếu thời gian hiện tại vượt qua mốc này, token đã hết hạn và hệ thống sẽ từ chối truy cập.

Tôi có thể dán token thật đang chạy trên môi trường production vào đây không?

Có, việc này hoàn toàn an toàn. Công cụ Giải mã JWT hoạt động trực tiếp trên trình duyệt của bạn. Chuỗi token không bao giờ được gửi qua mạng hay lưu trữ trên bất kỳ máy chủ nào. Theo nguyên tắc bảo mật cơ bản, bạn vẫn nên hạn chế chia sẻ token thật cho người khác để tránh rủi ro lộ lọt dữ liệu nhạy cảm.

Tại sao công cụ báo lỗi không thể giải mã token của tôi?

Nguyên nhân phổ biến nhất là do chuỗi bạn nhập không đúng định dạng chuẩn. Một JWT hợp lệ phải bao gồm ba phần được ngăn cách bằng hai dấu chấm. Hãy kiểm tra xem bạn có vô tình sao chép thiếu ký tự, chèn thêm khoảng trắng, hoặc token đã bị mã hóa sai cách hay không. Bạn cũng có thể dùng công cụ giải mã Base64 để kiểm tra từng phần riêng biệt.

Tôi có thể chỉnh sửa nội dung token và đóng gói lại bằng công cụ này không?

Không, công cụ này chỉ hỗ trợ đọc và trích xuất thông tin. Nếu bạn thay đổi bất kỳ dữ liệu nào trong payload, toàn bộ chữ ký ban đầu sẽ trở nên vô hiệu. Để tạo ra một token mới hợp lệ, bạn cần ký lại dữ liệu bằng khóa bí mật trên server của mình.

Tại sao dữ liệu JSON trong token của tôi hiển thị thành một chuỗi liền mạch khó đọc?

Thông thường công cụ Giải mã JWT sẽ tự động định dạng lại cấu trúc JSON cho dễ nhìn. Nếu payload của bạn chứa một chuỗi JSON được lồng ghép thay vì một object chuẩn, nó sẽ hiển thị nguyên bản. Bạn có thể sao chép phần dữ liệu đó và sử dụng trình định dạng JSON để làm gọn lại cấu trúc mã.