Bạn đã từng nghe về Xác thực và Ủy quyền trong lập trình website chưa? Hãy cùng tìm hiểu những điểm khác biệt giữa chúng qua bài viết dưới đây nhé!
Giới thiệu về Xác thực và Ủy quyền
Xác thực là gì? Xác thực (Authentication) là quá trình kiểm tra danh tính một tài khoản khi đăng nhập vào hệ thống bằng một hệ thống xác thực.
Đây là bước đầu tiên trong mọi hệ thống yêu cầu nhận biết người dùng hoặc lưu trữ các hành động cá nhân của từng người dùng. Đơn giản nói, Xác thực là câu trả lời cho câu hỏi “Bạn là ai?”
Ủy quyền là gì? Ủy quyền (Authorization) là quá trình xác định xem người dùng đã xác thực có quyền truy cập vào các tài nguyên cụ thể hay không. Nó xác minh quyền hạn của bạn để cấp cho bạn quyền truy cập vào thông tin, cơ sở dữ liệu, tập tin, v.v.
Ủy quyền thường được thực hiện sau khi Xác thực xác nhận các đặc quyền của bạn. Đơn giản nói, nó giống như cho phép ai đó chính thức làm điều gì đó hoặc truy cập vào điều gì đó.
Xác thực khác Ủy quyền như thế nào?

Xác thực và Ủy quyền là hai quá trình khác nhau trong quản lý thông tin an toàn.
Xác thực có nghĩa là xác nhận danh tính của bạn, trong khi Ủy quyền có nghĩa là cấp quyền truy cập vào hệ thống. Đơn giản nói, Xác thực là xác minh bạn là ai, trong khi Ủy quyền là xác minh quyền hạn truy cập của bạn.
Ví dụ, khi bạn đăng nhập vào một trang web, quá trình đăng nhập sẽ xác thực tài khoản của bạn (đây là Xác thực). Sau đó, quá trình Ủy quyền sẽ xác định chức năng mà bạn có thể truy cập và sử dụng trên trang web đó.
Vậy, mặc dù cả hai quá trình khác nhau nhưng chúng bổ trợ cho nhau trong việc định danh người dùng và xác định quyền hạn của người dùng đó.
Xác thực trong lập trình website
Trong lập trình website, có một số cách phổ biến để thực hiện Xác thực như sau:
- Tài khoản và mật khẩu: Đây là cách phổ biến nhất để xác thực tài khoản trong lập trình web. Người dùng sẽ nhập tên đăng nhập và mật khẩu để truy cập vào hệ thống.
Một giải pháp thường được sử dụng cho việc đăng nhập bằng tài khoản và mật khẩu có thể được liệt kê như sau:
- Triển khai đăng nhập bằng Cookie + session: Đây là phương pháp đăng nhập cổ điển nhất và vẫn được nhiều doanh nghiệp sử dụng. Khi người dùng đăng nhập lần đầu tiên, quy trình sau sẽ xảy ra:

Sau khi hoàn thành đăng nhập lần đầu tiên, các lần truy cập tiếp theo có thể sử dụng trực tiếp cookie để xác thực:

- Triển khai đăng nhập bằng Token: Thay vì sử dụng các bộ nhớ có sẵn trên máy chủ như session, xác thực bằng token yêu cầu người dùng lưu trữ một chuỗi ký tự trên bộ nhớ của người dùng sau khi gửi yêu cầu xác thực bằng tài khoản và mật khẩu. Hệ thống sẽ tạo ra một token (được mã hóa bằng các thuật toán mã hóa khác nhau) để người dùng sử dụng như một vé cho các yêu cầu truy cập sau này.

Sau khi có token, mỗi yêu cầu tiếp theo của người dùng sẽ được kèm theo token đã cung cấp. Máy chủ sẽ nhận token và xác định người dùng đang truy cập là ai.
- Chứng thực OAuth: OAuth là một tiêu chuẩn cho việc chứng thực thông qua mạng xã hội như Facebook, Google hoặc Twitter.
OAuth là viết tắt của Open Authorization. OAuth giúp các ứng dụng có thể chia sẻ tài nguyên mà không cần chia sẻ thông tin đăng nhập. OAuth bao gồm bốn vai trò khác nhau:
- Resource Server: Một máy chủ HTTP nơi người dùng có thể tạo, sửa đổi hoặc xóa các bản ghi, tài liệu hoặc tệp.
- Resource Owner: Duy trì quyền sở hữu tài nguyên mà người dùng đã tạo hoặc sửa đổi trên máy chủ và ủy quyền cho ứng dụng bên thứ ba truy cập vào tài khoản của họ.
- Client: Ứng dụng bên thứ ba muốn truy cập vào tài khoản người dùng. Trước khi có thể làm điều đó, máy chủ ủy quyền và chủ sở hữu tài nguyên phải ủy quyền cho yêu cầu đó.
- Authorization Server: Chịu trách nhiệm xác thực và ủy quyền yêu cầu từ Client.
Thí dụ:
Khi ta đăng nhập bằng Facebook hay Gmail, website sẽ đưa ta đến trang (hoặc phần mềm) của Facebook và yêu cầu quyền truy cập mà nó cần để cho phép bạn đăng nhập và sử dụng dịch vụ. Nếu ta đồng ý, Facebook sẽ cung cấp cho website một token. Token này chứa một số quyền hạn nhất định để website xác minh bạn là ai và hoạt động tương ứng. Ngay cả khi website này bị tấn công, hacker chỉ có thể lấy được thông tin và hoạt động trên website đó mà không ảnh hưởng đến những website khác. Vì vậy, đăng nhập bằng phương pháp OAuth này rất an toàn cho người dùng cuối như chúng ta.
- Chứng thực dựa trên vấn đề thiết bị: Đây là một cách xác thực tài khoản dựa trên vấn đề của thiết bị. Ví dụ, sử dụng mã QR hoặc mã số từ một thiết bị và nhập vào một thiết bị khác để xác thực tài khoản.
Mỗi cách xác thực được liệt kê ở trên đều có điểm mạnh riêng, hy vọng từng lập trình viên sẽ biết cách lựa chọn cách xác thực phù hợp với yêu cầu bảo mật của hệ thống hoặc dịch vụ.
Bộ môn Công nghệ thông tin Cao đẳng FPT Polytechnic Hà Nội