Bộ giải mã JWT
Mã thông báo Web JSON là ba phân đoạn Base64url: header.payload.signature. Dán JWT để đọc thuật toán (alg), nhà phát hành (iss), chủ đề (phụ) và hết hạn (exp) mà không gửi mã thông báo đến máy chủ. Bộ giải mã này không xác minh chữ ký — hãy dùng bí mật của ứng dụng của bạn hoặc JWKS cho việc đó.
Token JWT
Đầu ra
{
"header": {
"alg": "HS256",
"typ": "JWT"
},
"payload": {
"sub": "1234567890",
"name": "Ada",
"iat": 1516239022
}
}
Cách giải mã JWT
1. Dán chuỗi JWT (định dạng eyJ...).
2. Đọc JSON tiêu đề đã giải mã (typ, alg).
3. Đọc xác nhận tải trọng (phụ, điểm kinh nghiệm, vai trò).
4. Kiểm tra điểm kinh nghiệm so với hiện tại thời gian — mã thông báo hết hạn không xác thực được API.
Ví dụ về kiểm tra JWT
Gỡ lỗi 401 trái phép
Giải mã mã thông báo truy cập — exp có thể là trong quá khứ do đồng hồ lệch hoặc TTL ngắn.
Kiểm tra OAuth id_token
Xem các xác nhận quyền sở hữu email và tên được trả về từ nhà cung cấp danh tính.
Xem lại kiểm tra lịch thi đấu
Xác nhận mã thông báo kiểm tra HS256 có vai trò:xác nhận quyền sở hữu của quản trị viên trước khi kiểm tra tích hợp.
Khi nào nên giải mã JWT
• Khi gỡ lỗi xác thực trong quá trình phát triển bằng mã thông báo kiểm tra.
• Khi tìm hiểu cấu trúc JWT và các xác nhận quyền sở hữu tiêu chuẩn.
• Khi xác minh tải trọng trước khi triển khai kiểm tra RBAC.
Bảo mật giới hạn
• Không dán mã thông báo sản xuất có đặc quyền trực tiếp vào các trang web không đáng tin cậy — công cụ này mang tính cục bộ nhưng hãy thận trọng.
• Khi bạn cần xác minh chữ ký — hãy dùng mật mã phía máy chủ với khóa bí mật/chung.
• Khi mã thông báo được mã hóa JWE — định dạng khác với JWS ba phần.
Xác nhận quyền sở hữu đã đăng ký tiêu chuẩn
iss (nhà phát hành), sub (chủ đề), aud (đối tượng), exp (hết hạn), nbf (không phải trước đó), iat (phát hành tại), jti (JWT ID). Các xác nhận quyền sở hữu tùy chỉnh như vai trò hoặc ID đối tượng thuê là dành riêng cho từng ứng dụng.
Thuật toán chữ ký
HS256 sử dụng bí mật chung; RS256 sử dụng cặp khóa công khai/riêng RSA. Khóa công khai được xuất bản qua URL JWKS để xác minh.
Đồng hồ lệch
API thường cho phép mất 30–60 giây trên exp/nbf. Nếu bộ giải mã hợp lệ nhưng API từ chối, hãy kiểm tra đồng hồ và múi giờ của máy chủ.
Không bao giờ chỉ tin tưởng tải trọng
Giải mã phía máy khách chỉ dành cho gợi ý giao diện người dùng — các quyết định ủy quyền phải xác minh chữ ký trên máy chủ mọi yêu cầu.
Câu hỏi thường gặp
Ba phần JWT là gì?
Tiêu đề (thuật toán & loại), tải trọng (xác nhận quyền sở hữu), chữ ký (xác minh). Được phân tách bằng dấu chấm.
Việc giải mã có xác thực mã thông báo không?
Không — bất kỳ ai cũng có thể giải mã tải trọng; chữ ký chứng minh tính toàn vẹn và nhà phát hành.
Xác nhận điểm kinh nghiệm là gì?
Dấu thời gian Unix giây khi mã thông báo hết hạn. So sánh với thời gian UTC hiện tại.
Không có thuật toán tấn công nào?
Máy chủ phải từ chối alg:none — bộ giải mã vẫn có thể hiển thị tiêu đề để kiểm tra.
Dữ liệu nhạy cảm trong tải trọng?
Tải trọng JWT là Base64 không được mã hóa — không bao giờ đặt mật khẩu hoặc PII một cách không cần thiết.
Local đang xử lý?
Có — mã thông báo được phân tích cú pháp trong trình duyệt.
Làm mới so với mã thông báo truy cập?
Cả hai đều là JWT thường xuyên — giải mã từng mã thông báo để xem phạm vi và thời gian tồn tại khác nhau.