Authentication & Authorization là gì?

Authentication (xác thực) và Authorization (phân quyền) là hai khái niệm quan trọng trong bảo mật hệ thống và API.
Nói một cách đơn giản:
- Authentication: Xác minh bạn là ai.
- Authorization: Xác định bạn được phép làm gì.
Ví dụ, khi đăng nhập vào một hệ thống quản lý sản phẩm, Authentication giúp hệ thống xác minh danh tính của bạn. Sau đó, Authorization xác định bạn có được phép xem, thêm, sửa hoặc xóa sản phẩm hay không.
1. Authentication là gì?

Authentication là quá trình xác minh danh tính của một người dùng hoặc một hệ thống khi họ muốn truy cập vào một dịch vụ. Quá trình này giúp hệ thống xác định đối tượng đang gửi request có phải là đối tượng mà họ tuyên bố hay không.
Một số phương thức xác thực phổ biến gồm:
- Tên người dùng và mật khẩu.
- Mã xác minh một lần (OTP).
- Sinh trắc học như dấu vân tay hoặc khuôn mặt.
- Token hoặc chứng chỉ số trong các hệ thống phù hợp.
Các yếu tố xác thực (Authentication Factors)
Các yếu tố xác thực thường được chia thành ba nhóm:
- Something you know: Thứ bạn biết, chẳng hạn mật khẩu hoặc mã PIN.
- Something you have: Thứ bạn sở hữu, chẳng hạn thiết bị bảo mật hoặc khóa xác thực.
- Something you are: Đặc điểm sinh trắc học, chẳng hạn dấu vân tay.
Dựa trên số lượng yếu tố xác thực độc lập được sử dụng, có thể chia thành các hình thức sau:
Single-Factor Authentication (SFA)
Sử dụng một yếu tố xác thực để xác minh danh tính. Ví dụ, người dùng đăng nhập bằng tên tài khoản và mật khẩu. Cả hai đều thuộc nhóm “thứ bạn biết”, nên vẫn chỉ được tính là một yếu tố.
Two-Factor Authentication (2FA)
Sử dụng hai yếu tố xác thực thuộc hai nhóm khác nhau. Ví dụ, người dùng nhập mật khẩu và xác nhận đăng nhập bằng một thiết bị bảo mật.
Multi-Factor Authentication (MFA)
Sử dụng từ hai yếu tố xác thực độc lập trở lên. 2FA là một trường hợp cụ thể của MFA. Việc kết hợp nhiều yếu tố có thể tăng cường bảo mật so với chỉ sử dụng một yếu tố.
Ví dụ: Khi sử dụng thẻ ATM, người dùng cần có thẻ và nhập mã PIN. Trong trường hợp này, thẻ thuộc nhóm “thứ bạn sở hữu”, còn PIN thuộc nhóm “thứ bạn biết”.
2. Authorization là gì?
Authorization là quá trình xác định một người dùng hoặc một hệ thống có được phép truy cập tài nguyên hoặc thực hiện một hành động cụ thể hay không.
Quá trình này thường dựa trên các thông tin như vai trò, quyền hạn, chính sách bảo mật hoặc quyền sở hữu tài nguyên.
Ví dụ, trong một hệ thống quản lý sản phẩm:
- User có thể xem danh sách sản phẩm.
- Nhân viên quản lý có thể thêm và chỉnh sửa sản phẩm.
- Admin có thể được phép xóa sản phẩm và quản lý tài khoản.
Việc một người đăng nhập thành công không có nghĩa là họ được phép thực hiện mọi thao tác. Hệ thống vẫn cần kiểm tra quyền tương ứng với từng tài nguyên và hành động.
Một số mô hình phân quyền phổ biến:
- Role-Based Access Control (RBAC): Phân quyền dựa trên vai trò, chẳng hạn User, Manager hoặc Admin.
- Attribute-Based Access Control (ABAC): Phân quyền dựa trên các thuộc tính như vai trò, phòng ban, tài nguyên và ngữ cảnh truy cập.
3. Phân biệt Authentication và Authorization
| Tiêu chí | Authentication | Authorization |
|---|---|---|
| Mục đích | Xác minh danh tính | Kiểm tra quyền truy cập |
| Câu hỏi chính | Bạn là ai? | Bạn được phép làm gì? |
| Cơ sở kiểm tra | Thông tin hoặc bằng chứng xác thực | Vai trò, quyền hạn, chính sách và thuộc tính |
| Ví dụ | Đăng nhập bằng thông tin xác thực hợp lệ | Kiểm tra User có quyền xóa sản phẩm hay không |
| Kết quả | Danh tính được xác minh hoặc không | Hành động được cho phép hoặc bị từ chối |
4. Authentication và Authorization trong API hoạt động như thế nào?
Xét trường hợp client gửi request để xóa sản phẩm thông qua endpoint DELETE /api/products/123.
Bước 1: Client gửi request
Client gửi request đến API, thường kèm access token trong header Authorization nếu endpoint yêu cầu xác thực.
Bước 2: Authentication — Xác thực
Server kiểm tra thông tin xác thực và xác minh danh tính của người gửi request.
Nếu thiếu thông tin xác thực hoặc token không hợp lệ, API thường trả về 401 Unauthorized.
Ví dụ:
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"error": "invalid_token",
"message": "Authentication failed"
}
Bước 3: Authorization — Phân quyền
Sau khi xác thực thành công, server kiểm tra người dùng có quyền xóa sản phẩm này hay không.
Nếu người dùng đã được xác thực nhưng không có quyền thực hiện thao tác, API thường trả về 403 Forbidden.
HTTP/1.1 403 Forbidden
Content-Type: application/json
{
"error": "insufficient_permissions",
"message": "You do not have permission to delete this product"
}
Bước 4: Thực hiện thao tác
Nếu request vượt qua các bước kiểm tra cần thiết, server tiếp tục xử lý yêu cầu xóa sản phẩm và trả về kết quả phù hợp.
Lưu ý: Đây là luồng minh họa phổ biến cho một endpoint được bảo vệ. Thứ tự xử lý và định dạng lỗi thực tế có thể khác nhau tùy thiết kế API. Một số hệ thống cũng có thể trả 404 Not Found thay vì 403 Forbidden để tránh tiết lộ sự tồn tại của tài nguyên.
5. Kết luận
Authentication và Authorization là hai cơ chế khác nhau nhưng bổ trợ cho nhau trong bảo mật hệ thống.
Authentication xác minh danh tính của người dùng hoặc client, trong khi Authorization xác định họ được phép truy cập tài nguyên và thực hiện hành động nào.
Trong API, việc kết hợp hai cơ chế này giúp hệ thống không chỉ xác minh ai đang gửi request mà còn kiểm soát những gì họ có thể làm. Tuy nhiên, bảo mật API còn cần các biện pháp khác như kiểm tra dữ liệu đầu vào, bảo vệ thông tin nhạy cảm và xử lý lỗi phù hợp.








Khoá học lập trình game con rắn cho trẻ em




