1. Authentication & Authorization là gì?
Hai khái niệm này thường đi cùng nhau nhưng khác nhau hoàn toàn.
Authentication – Xác thực
trả lời cho câu hỏi bạn là ai
Ví dụ:
Đăng nhập bằng:
- Username + Password
- Access Token
- JWT
- OAuth 2.0
Server xác định danh tính của User.
Authorization – Phân quyền
trả lời cho câu hỏi bạn có quyền làm những gì
Ví dụ:
User A:
→ Xem profile
→ Không được xóa user khác
Admin:
→ Xem user
→ Tạo user
→ Xóa user
tóm lại authentication là để đang nhập xát định bạn là ai authorization là để phân quyền cho phép bạn được làm và
không được làm gì.
2. Authentication hoạt động như thế nào?
Ví dụ đăng nhập:
POST /login
{
"email": "[email protected]",
"password": "123456"
}
Server:
1. Tìm User
2. Kiểm tra password
3. Xác thực thành công
4. Tạo Access Token
5. Trả Token
Response:
{
"accessToken": "eyJ..." ( đây còn được gọi là token lấy cái này để phân quyền user)
}
Client sử dụng token cho những request tiếp theo:
Authorization: Bearer eyJ...
3. Authentication khác Authorization
Đây là phần cần nhớ nhất.
Ví dụ User đăng nhập thành công:
Authentication
→ User là Nguyễn Văn A
Sau đó User gọi:
DELETE /users/10
Server kiểm tra:
User là ai?
→ Nguyễn Văn A
User có quyền DELETE User không?
→ Không
Kết quả:
403 Forbidden
Tức là:
Authentication
→ Xác định danh tính
Authorization
→ Kiểm tra quyền
4. Role-Based Authorization
Cách phổ biến là phân quyền theo Role ( vai trò)
Ví dụ:
USER
ADMIN
MANAGER
user chỉ có quyền xem profile và chỉnh sửa profile của chính họ
Manager chỉ có quyển quản lý các đơn hàng
Admin quản lý tất cả role user
5. Role và Permission
Hai khái niệm này cũng nên phân biệt.
Role
Đại diện cho một nhóm quyền.
ADMIN
USER
MANAGER
Permission
Quyền cụ thể:
USER_READ
USER_CREATE
USER_UPDATE
USER_DELETE
6. Authentication không chỉ là Login
Authentication có thể sử dụng nhiều cơ chế:
Username + Password
Cách phổ biến nhất khi login.
Session
Server lưu session và Client giữ session identifier.
JWT
Server sử dụng token để xác định User.
OAuth 2.0
Thường dùng khi muốn cấp quyền truy cập thông qua một hệ thống Identity/Authorization khác.
tổng kết lại: Auhthentication là để đang nhập sát định danh tính authorization dùng để phân quyền cho phép người đăng nhập có quyền làm gì và không làm gì.
Bài viết khác
Series 7 — Web Quality – Engineering :Testing – Unit Testing, Integration Testing, Web Performance – Core Web Vitals, Code Splitting, Lazy Loading
Series 7 — Web Quality – Engineering Bài 3: Testing – Unit Testing, Integration Testing và End-to-End Testing trong ứng dụng web 1. Vì sao ứng dụng web cần Testing? Trong quá trình phát triển Frontend, chúng ta thường kiểm tra ứng dụng bằng cách chạy website trên trình duyệt, nhấn vào các nút, nhập […]
Series 7 — Web Quality – Engineering : Authentication & Authorization
Series 7 — Web Quality – Engineering Bài 1: Authentication & Authorization – Xác thực và phân quyền trong ứng dụng web 1. Mở đầu Khi xây dựng một ứng dụng web có chức năng đăng nhập, chúng ta thường nghĩ rằng chỉ cần tạo biểu mẫu nhập email, mật khẩu và kiểm tra thông […]
Series 6 – Next.js Advanced – Production: Next.js Build & Deployment
Series 6 – Next.js Advanced & Production Bài 5: Next.js Build & Deployment – Từ mã nguồn đến môi trường Production 1. Mở đầu Trong quá trình phát triển một ứng dụng web, việc chạy thành công trên máy tính cá nhân chưa có nghĩa là ứng dụng đã sẵn sàng để đưa đến người […]
Series 6 – Next.js Advanced – Production: Next.js Internationalized Routing Next.js Static Export
Series 6 – Next.js Advanced & Production Bài 3: Next.js Internationalized Routing – Tổ chức URL cho website đa ngôn ngữ 1. Mở đầu Sau khi xây dựng cơ chế dịch nội dung và định dạng theo locale, ứng dụng cần một cách để người dùng truy cập đúng phiên bản ngôn ngữ. Ví […]
Series 6 – Next.js Advanced & Production: Metadata & SEO, Internationalization (i18n) & Localization (l10n)
Series 6 – Next.js Advanced & Production Bài 1: Metadata & SEO trong Next.js – Tối ưu thông tin và khả năng hiển thị trên công cụ tìm kiếm 1. Mở đầu Khi xây dựng một website, việc hoàn thiện giao diện và chức năng mới chỉ là một phần của quá trình phát triển. […]
Series 5 – Next.js Fundamentals: CSR, SSR, SSG, ISR và cách lựa chọn
Series 5 – Next.js Fundamentals Bài 7 : CSR, SSR, SSG và ISR – Các chiến lược Rendering trong Next.js 1. Mở đầu Khi xây dựng một website bằng React, chúng ta thường tập trung vào việc tạo component, quản lý state và hiển thị giao diện trên trình duyệt. Tuy nhiên, khi ứng dụng […]