jobBox
Cẩm nang nghề nghiệp

JSON Web Token là gì: Định nghĩa và cách hoạt động

Article Image

JSON Web Token (JWT) là một tiêu chuẩn mở (open industry standard) dùng để truyền tải thông tin an toàn giữa hai thực thể, chẳng hạn như máy khách (frontend) và máy chủ (backend), trong các ứng dụng web hoặc hệ thống phân tán. JWT giúp đảm bảo tính bảo mật khi chia sẻ dữ liệu, đặc biệt là trong các ứng dụng cần xác thực và ủy quyền người dùng.

Quá trình hoạt động của JWT:

Tạo JSON Payload:

Payload là phần dữ liệu chứa các thông tin mà bạn muốn chia sẻ giữa máy khách và máy chủ, chẳng hạn như thông tin người dùng, quyền truy cập, hoặc bất kỳ thông tin nào khác.

Dữ liệu trong payload có thể được mã hóa dưới dạng JSON, nhưng không được mã hóa bảo mật (dễ dàng giải mã nếu ai đó truy cập JWT mà không có sự bảo mật thích hợp).

Tạo khóa ký và chọn thuật toán:

Để đảm bảo tính toàn vẹn và xác thực của JWT, một khóa bí mật (secret key) được sử dụng để ký thông điệp. Các thuật toán ký phổ biến như HS256 (HMAC với SHA-256), RS256 (RSA với SHA-256), hoặc ES256 (ECDSA với SHA-256) được áp dụng để tạo chữ ký an toàn.

Tạo Header:

Header của JWT chứa các thông tin cần thiết để nhận dạng và xác định thuật toán ký. Thông thường, header sẽ bao gồm:

alg: Thuật toán ký, ví dụ: HS256.

typ: Loại mã thông báo, thường là JWT.

Ví dụ của một header (dưới dạng JSON):

{

"alg": "HS256",

"typ": "JWT"

}

Tạo chữ ký:

Để tạo chữ ký, máy chủ sẽ nối header và payload, sau đó mã hóa chúng bằng Base64 URL. Cuối cùng, dùng khóa bí mật và thuật toán đã chọn để ký kết phần dữ liệu đã mã hóa này. Chữ ký này bảo vệ JWT khỏi các thay đổi trái phép.

Tạo JWT:

JWT là sự kết hợp của ba phần được mã hóa và nối lại bằng dấu chấm (.):

Header (được mã hóa Base64 URL)

Payload (được mã hóa Base64 URL)

Chữ ký (được mã hóa Base64 URL) Ví dụ JWT:

<header>.<payload>.<signature>

Xác minh JWT:

Khi máy khách gửi yêu cầu tới máy chủ, JWT sẽ được gửi trong phần Authorization Header của HTTP request (thường là Bearer <token>).

Máy chủ nhận JWT, giải mã nó, kiểm tra chữ ký với khóa bí mật của mình. Nếu chữ ký hợp lệ và thông tin trong payload chưa bị thay đổi, máy chủ sẽ cho phép yêu cầu tiếp tục.

Ưu điểm của JWT:

Độc lập về nền tảng: JWT có thể được sử dụng trên nhiều nền tảng và ngôn ngữ lập trình khác nhau, từ ứng dụng web đến ứng dụng di động.

Bảo mật: Thông tin trong JWT có thể được bảo vệ thông qua mã hóa và chữ ký số, giúp ngăn chặn các hành vi giả mạo hoặc sửa đổi trái phép.

Không trạng thái (Stateless): JWT không yêu cầu lưu trữ session trên máy chủ, giúp giảm tải cho máy chủ và tạo sự linh hoạt cho các ứng dụng phân tán.

Các ứng dụng phổ biến của JWT:

Xác thực người dùng (Authentication): JWT thường được sử dụng để xác thực người dùng trong các ứng dụng web hoặc di động. Sau khi đăng nhập thành công, máy chủ cấp JWT và gửi cho người dùng.

Ủy quyền (Authorization): Sau khi người dùng đã đăng nhập và nhận JWT, họ có thể sử dụng token này để truy cập các tài nguyên hoặc API mà họ có quyền truy cập.

Truyền tải dữ liệu giữa các dịch vụ: JWT có thể được sử dụng trong các hệ thống phân tán, nơi các dịch vụ khác nhau cần giao tiếp với nhau mà không cần lưu trữ trạng thái giữa các dịch vụ đó.


Tóm lại:

JWT là một phương thức hiệu quả và an toàn để truyền tải thông tin giữa các ứng dụng hoặc máy chủ và máy khách, đảm bảo bảo mật, tính toàn vẹn và khả năng mở rộng cho các ứng dụng web hiện đại.

Bình luận

Chưa có bình luận nào

Từ khóa nổi bật

joxBox

Luôn nhận thông tin mới nhất
Từ chúng tôi

joxBox