JWT là gì? Các thành phần và chức năng của JWT
JWT (JSON Web Token) là một tiêu chuẩn mã hóa dạng chuỗi JSON, được sử dụng để truyền tải thông tin an toàn giữa các bên trong một hệ thống phân tán, đặc biệt là các ứng dụng web. JWT thường được sử dụng trong xác thực người dùng và trao quyền truy cập.
1. Các thành phần của JWT#
JWT được chia thành ba phần chính, được ngăn cách bởi dấu chấm (.):
a. Header
Chứa metadata về loại token và thuật toán mã hóa.
Ví dụ:
{ "alg": "HS256", "typ": "JWT" }Sau khi mã hóa Base64, sẽ thành:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
b. Payload
Chứa dữ liệu hoặc thông tin (claims) về người dùng hoặc hệ thống.
Claims có thể là: Registered claims (Đã định nghĩa trước): Ví dụiss(issuer),exp(expiry),sub(subject).Public claims: Được định nghĩa theo ý riêng, ví dụ
userId,role.Private claims: Dùng trong nội bộ giữa hai bên.
Ví dụ:
{ "sub": "1234567890", "name": "John Doe", "admin": true }Sau khi mã hóa Base64, sẽ thành:eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9
c. Signature
Được tạo bằng cách kết hợp:
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret )Phần này đảm bảo tính toàn vẹn của token.
Ví dụ:
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
2. Đặc điểm và chức năng của JWT#
a. Đặc điểm
JWT được mã hóa bằng Base64 nhưng không phải mã hóa bảo mật, nghĩa là nội dung payload có thể đọc được.
Được sử dụng với một secret key để xác minh tính toàn vẹn (chống giả mạo).
b. Chức năng
Xác thực người dùng (Authentication): Sau khi đăng nhập thành công, server sẽ tạo JWT và trả về cho client.
- Client sử dụng JWT để truy cập tài nguyên (thông qua header
Authorization: Bearer <JWT>).
- Client sử dụng JWT để truy cập tài nguyên (thông qua header
Trao quyền truy cập (Authorization): Server kiểm tra thông tin trong payload (
role,permissions) để xác định quyền của người dùng.Trao đổi thông tin an toàn: JWT có thể chứa dữ liệu cần truyền giữa các hệ thống mà không cần kết nối liên tục với server.
3. Ưu và nhược điểm của JWT#
Ưu điểm
Stateless: Server không cần lưu trữ thông tin trạng thái của người dùng (giảm tải cho server).
Khả năng mở rộng: Dễ dàng tích hợp vào các hệ thống phân tán.
Bảo mật: Signature đảm bảo token không bị thay đổi.
Nhược điểm
Không thể thu hồi (revoke): Nếu không dùng các kỹ thuật bổ sung (như blacklist).
Kích thước lớn hơn: So với session token thông thường do chứa cả header và payload.
Payload không mã hóa: Dữ liệu nhạy cảm có thể bị đọc nếu token rơi vào tay kẻ tấn công.
4. Ví dụ một JWT hoàn chỉnh#
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9. SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
5. Khi nào nên dùng JWT#
Xác thực và phân quyền trong ứng dụng web/mobile.
Giao tiếp giữa các dịch vụ microservices.
Trao đổi dữ liệu an toàn giữa các bên.
Bạn cần tìm hiểu thêm về cách triển khai JWT không?
Bài liên quan trong #Tin tức
-
Hướng dẫn cách sửa boot trong 2 phút không cần cài lại Windows
minhdev · 💬 1 -
Tội phạm mạng đang dần "bỏ trốn" khỏi Telegram
minhdev -
Top 4 Website Đăng Tin Rao Vặt Bất Động Sản Miễn Phí Uy Tín Nhất Hiện Nay
topdev -
Tổng Hợp Các Trang Đăng Tin Bất Động Sản Miễn Phí Hiệu Quả Nhất 2025
topdev -
Cách Rời Nhóm Telegram Trong Im Lặng (Không Ai Biết) – Hướng Dẫn Chi Tiết
topdev