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

JWT Token Theft & Payload Tampering

Ở bài JWT & Token Authentication, ta đã biết JWT được sử dụng để xác thực user sau khi đăng nhập: Login ↓ Server xác thực username/password ↓ Access Token + Refresh Token ↓ Client lưu token ↓ Gửi Access Token trong mỗi request Ví dụ: GET /api/profile Authorization: Bearer <access-token> Server nhận token, verify […]

Test Types(Các loại kiểm thử phần mềm)

1. Lời mở đầu và vai trò định hình phạm vi của Test Types trong kiểm thử phần mềm: Trong quy trình phát triển và kiểm định chất lượng phần mềm, nếu như Testing Levels (Các cấp độ kiểm thử như Unit, Integration, System, Acceptance) giải quyết câu hỏi kiểm thử được thực hiện ở […]

PHP & Laravel Fundamentals

1. PHP là gì? PHP là ngôn ngữ lập trình phía server, thường dùng để xây dựng backend và web application. Flow cơ bản: Client ↓ HTTP Request PHP / Laravel ↓ Business Logic ↓ Database ↓ HTTP Response Laravel được xây dựng trên PHP, nên muốn học Laravel cần nắm những nền tảng PHP […]

JWT & Token Authentication

1. Token Authentication là gì? Token Authentication là cơ chế xác thực trong đó Client đăng nhập và nhận một Token từ Server. Sau đó, Client sử dụng Token này trong các request tiếp theo để chứng minh rằng request đã được xác thực. Thay vì gửi lại username/password cho mỗi request: Login ↓ Access […]

Series 1 — Web Fundamentals: DNS – Browser

Series 1 — Web Fundamentals   Internet → HTTP/HTTPS → DNS → Browser   Bài 3 :DNS & Domain   DNS & Domain – Làm thế nào Domain được chuyển thành IP? Ở hai bài trước, chúng ta đã tìm hiểu: Internet là gì? Client và Server là gì? IP Address là gì? HTTP/HTTPS dùng […]

API Error Handling – Xử lý lỗi trong API

1. API Error Handling là gì? API Error Handling là cách API phát hiện, xử lý và trả về lỗi một cách nhất quán khi request không thể thực hiện thành công. Ví dụ: Client ↓ API ↓ Có lỗi? ├── Không → Success Response └── Có → Error Handling → Error Response mục tiêu […]

Leave a Reply

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