0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

So Sánh Giữa Xác Thực Dựa Trên Session và Xác Thực Dựa Trên Token

Đăng vào 3 tuần trước

• 3 phút đọc

Xin chào các bạn, hôm nay chúng ta sẽ cùng tìm hiểu về một chủ đề quan trọng trong lĩnh vực phát triển ứng dụng web: Xác Thực Dựa Trên Session và Xác Thực Dựa Trên Token. Đây là hai phương thức phổ biến nhất để xác thực người dùng trong các ứng dụng. Đặc biệt, với sự phát triển của công nghệ và yêu cầu bảo mật ngày càng cao, việc nắm vững những khái niệm này là cực kỳ cần thiết.

1. Tổng Quan Về Xác Thực (Authentication)

Xác thực là quá trình xác minh danh tính của người dùng, trả lời câu hỏi: Ai là người đang truy cập vào hệ thống của tôi? Để thực hiện điều này, người dùng cần cung cấp thông tin xác thực, thường là tên đăng nhập và mật khẩu, mà hệ thống sẽ sử dụng để kiểm tra.

2. Xác Thực Dựa Trên Session

Cách Thức Hoạt Động

Khi người dùng đăng nhập thành công, server sẽ tạo ra một Session ID duy nhất. ID này sẽ được lưu trữ trong cơ sở dữ liệu, bộ nhớ RAM hoặc các giải pháp lưu trữ khác. Session ID sau đó sẽ được gửi về trình duyệt dưới dạng cookie, và server sử dụng cookie này để xác thực các yêu cầu từ người dùng trong suốt phiên làm việc.

Quy Trình Xác Thực

  1. Người dùng gửi thông tin đăng nhập.
  2. Server xác thực thông tin và tạo Session ID, lưu vào cơ sở dữ liệu.
  3. Cookie chứa Session ID được gửi về trình duyệt của người dùng.
  4. Các yêu cầu tiếp theo sẽ được gửi kèm theo cookie đó. Server kiểm tra Session ID trong cơ sở dữ liệu và xác thực người dùng.

Ưu Điểm

Server kiểm soát hoàn toàn thông tin session, giúp dễ dàng vô hiệu hóa phiên làm việc khi phát hiện tài khoản bị xâm phạm.

Nhược Điểm

  • Stateful: Server phải lưu trữ session, gây khó khăn cho các ứng dụng lớn và phân tán.
  • Tài nguyên: Cần nhiều tài nguyên để lưu trữ phiên, ảnh hưởng đến hiệu suất nếu số lượng người dùng lớn.

3. Xác Thực Dựa Trên Token (JWT - JSON Web Token)

Cách Thức Hoạt Động

Sau khi người dùng đăng nhập thành công, server tạo ra một token định danh. JWT là một phương pháp phổ biến để mã hóa và chứa thông tin xác thực. Token này sẽ được gửi về client và lưu trữ tại client, thường là trong localStorage hoặc sessionStorage. Client cần gửi token kèm theo các yêu cầu HTTP trong header để yêu cầu truy cập tài nguyên.

Quy Trình Xác Thực

  1. Người dùng gửi thông tin đăng nhập.
  2. Server xác thực và tạo ra một token (JWT). Token được gửi về client.
  3. Mỗi yêu cầu sau đó sẽ kèm theo token trong phần Authorization header.
  4. Server kiểm tra tính hợp lệ của token và xác thực người dùng.

Ưu Điểm

  • Stateless: Không cần lưu trữ session trên server, phù hợp với các hệ thống phân tán.
  • Dễ mở rộng: Không cần đồng bộ trạng thái giữa các máy chủ, giúp tăng tính khả thi theo quy mô.

Nhược Điểm

  • Bảo mật: Nếu token bị đánh cắp, kẻ tấn công có thể dễ dàng truy cập vào hệ thống đến khi token hết hạn.
  • Quản lý token: Việc hủy hoặc vô hiệu hóa token khó khăn hơn vì server không lưu trữ trạng thái của token.

4. Kết Luận

Xác thực dựa trên Session và xác thực dựa trên Token đều có những ưu điểm và nhược điểm riêng. Xác thực dựa trên Session thường phù hợp cho các ứng dụng nhỏ hoặc hệ thống không cần mở rộng lớn, trong khi xác thực dựa trên Token được ưa chuộng trong các hệ thống phân tán hoặc microservices. Việc hiểu rõ từng phương thức sẽ giúp bạn lựa chọn giải pháp tốt nhất cho ứng dụng của mình. Cảm ơn các bạn đã đọc bài viết này, hy vọng nó sẽ giúp ích cho các bạn trong quá trình phát triển ứng dụng!

Mình là Phan, một developer luôn khao khát học hỏi. Hẹn gặp lại các bạn trong bài viết tiếp theo!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

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

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