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 […]

Leave a Reply

Your email address will not be published. Required fields are marked *