[Diagram] Phân Tích Kiến Trúc Login "Siêu Cấp": Từ Request Đầu Tiên Đến Session Cuối Cùng
Chào anh em, trong quá trình làm Backend, chắc hẳn ai cũng từng làm chức năng Login. Nhưng khi hệ thống đạt đến quy mô hàng triệu người dùng hoặc yêu cầu bảo mật khắt khe (như tài chính hay thương mại điện tử), luồng Login không chỉ là một cặp username/password.
Hôm nay, mình sẽ cùng anh em mổ xẻ một sơ đồ luồng Login (Auth Flow) cực kỳ chi tiết mà mình vừa "khai quật" được. Đây là bài học thực tế về cách các hệ thống lớn xử lý Identity.
Link Diagram: https://github.com/HuyHoangCoder/Diagram/blob/main/diagram login.pdf anh em có thể tải file về và xem nhé
1. Toàn cảnh "Bản đồ" (Swimlanes Analysis)
Sơ đồ được chia thành các lớp (Swimlanes) rất rõ ràng, tương ứng với các Service/Component trong kiến trúc Microservices:
Client/User: Nơi khởi đầu request.WAF/API Gateway (Source 5): Lớp bảo vệ vòng ngoài (Firewall, chặn Bot).IDP / Auth Server (Source 4):Trái tim của hệ thống, điều phối toàn bộ quá trình xác thực.Risk Engine (Source 3):"Bộ não" đánh giá độ tin cậy của request.Identity Store (Source 2):Nơi lưu trữ thông tin User (Database).MFA / Providers:Các kênh xác thực yếu tố thứ hai (OTP, SMS, Authenticator).Session / Token Service:Quản lý vòng đời của phiên đăng nhập.
2. Phân tích luồng xử lý "Iceberg" (Tảng băng chìm)
Nhìn vào sơ đồ, chúng ta có thể chia quá trình Login thành 3 giai đoạn chính:
Giai đoạn 1: Sàng lọc & Nhận diện (The Gateway)
Ngay khi anh em bấm nút Login, request không đến thẳng DB đâu.
- Nó đi qua
WAF/Gatewayđể kiểm tra các dấu hiệu bất thường (IP lạ, Brute-force). - Sau đó,
IDP (Auth Server)sẽ tiếp nhận và thực hiện bước "Pre-authentication". Nó sẽ check xem User này thuộc phân vùng nào, trạng thái tài khoản ra sao.
Giai đoạn 2: Đánh giá rủi ro (The Risk Engine) - Điểm sáng nhất sơ đồ
Đây là phần mà các hệ thống Senior thường có. Thay vì tin tưởng ngay, hệ thống đẩy dữ liệu sang Risk Engine.
- Nó sẽ tính điểm (Scoring) dựa trên: Thiết bị có lạ không? Vị trí địa lý có bất thường (ví dụ vừa ở HN 5 phút sau đã ở HCM)?
- Decision: Nếu điểm rủi ro thấp -> Cho qua. Nếu trung bình -> Bắt buộc qua MFA. Nếu quá cao -> Block luôn.

Giai đoạn 3: Xác thực đa nhân tố & Cấp quyền (The Key)
- Nếu hệ thống yêu cầu
MFA, luồng sẽ nhảy sang lớpMFA Providers. Chỉ khi anh em nhập đúng OTP/Biometric, quá trình mới tiếp tục. - Cuối cùng, khi mọi thứ đã "Clear",
Session/Token Servicesẽ làm việc. Nó sẽ sinh raAccess Token (JWT)vàRefresh Token, đồng thời lưu vàoASSEM(có thể là một dạng lưu trữ session tập trung).
3. Những "Key Takeaways" cho anh em Backend
Từ sơ đồ này, chúng ta rút ra được vài bài học "đắt giá" để áp dụng vào project thực tế:
- Đừng tin vào Password: Luôn có lớp đánh giá rủi ro và MFA dự phòng.
- Stateless vs Stateful: Hệ thống sử dụng cả Token (Stateless cho API) và Session Service (Stateful để quản lý logout/revoke) để đảm bảo kiểm soát tuyệt đối.
- Separation of Concerns: Việc tách biệt Identity Store (lưu data) và Auth Server (xử lý logic) giúp hệ thống dễ dàng mở rộng và bảo mật hơn. Nếu DB bị lộ, kẻ tấn công vẫn khó lòng vượt qua được lớp Risk Engine hay MFA.
Kết luận
Một sơ đồ phức tạp như vậy cho thấy việc xây dựng hệ thống Login "chuẩn chỉnh" không hề đơn giản. Nó đòi hỏi sự phối hợp nhịp nhàng giữa nhiều Service và các lớp bảo mật chồng chéo.
Hy vọng bài phân tích này giúp anh em có cái nhìn sâu hơn về những gì xảy ra đằng sau một cái click chuột "Login".
Anh em thấy phần nào trong sơ đồ này là "khoai" nhất? Cùng thảo luận nhé!
All rights reserved