Bài 2: Các giao thức (Protocols) trong SSO
Để IdP (nơi xác thực) và SP (ứng dụng) có thể "nói chuyện" với nhau, chúng cần một chuẩn chung. Nếu không có các giao thức này, mỗi hệ thống sẽ tự định nghĩa cách xác thực riêng, dẫn đến sự hỗn loạn.
Có 3 cái tên quan trọng nhất mà một kỹ sư backend như bạn cần biết:
1. SAML (Security Assertion Markup Language)
- Đặc điểm: Là "ông già" trong làng SSO. Nó dựa trên định dạng XML.
- Cơ chế: IdP gửi một tài liệu XML (gọi là SAML Assertion) chứa thông tin người dùng cho SP.
- Ứng dụng: Thường dùng trong các hệ thống doanh nghiệp (Enterprise), các phần mềm nội bộ (ERP, CRM) hoặc các hệ thống yêu cầu độ bảo mật rất cao và khắt khe về mặt pháp lý.
- Ưu điểm: Rất bảo mật, quy chuẩn chặt chẽ.
- Nhược điểm: Cồng kềnh, khó triển khai trên các thiết bị di động hoặc các ứng dụng web hiện đại vì XML xử lý khá nặng.
2. OAuth 2.0
- Đặc điểm: Đây không phải là giao thức xác thực (Authentication), mà là giao thức cấp quyền (Authorization).
- Cơ chế: Nó cho phép một ứng dụng truy cập vào tài nguyên của bạn trên một ứng dụng khác mà không cần biết mật khẩu (ví dụ: cấp quyền cho app ABC truy cập vào danh bạ Google của bạn).
- Tại sao lại nhắc đến ở đây? Vì nhiều người nhầm lẫn OAuth 2.0 là SSO. Tuy nhiên, nó là nền tảng để xây dựng SSO.
3. OpenID Connect (OIDC)
- Đặc điểm: Đây chính là "ngôi sao" hiện nay. OIDC được xây dựng trên nền tảng của OAuth 2.0.
- Sự khác biệt: Nếu OAuth 2.0 giúp cấp quyền, thì OIDC thêm vào một lớp giúp xác thực danh tính (Identity).
- Ứng dụng: Được dùng phổ biến cho hầu hết các ứng dụng hiện đại: Đăng nhập bằng Google, Facebook, Apple, hoặc các hệ thống Microservices hiện nay.
- Đặc trưng: Sử dụng JSON (JWT - JSON Web Token) thay vì XML. Nó nhẹ, nhanh và cực kỳ thân thiện với Mobile App cũng như các hệ thống API/RESTful.
Bảng so sánh nhanh để Hiếu dễ hình dung
| Đặc điểm | SAML | OIDC |
|---|---|---|
| Dựa trên | XML | JSON (JWT) |
| Mục đích | Xác thực (Authentication) | Xác thực + Cấp quyền |
| Độ phức tạp | Cao | Thấp, linh hoạt |
| Phổ biến cho | Hệ thống doanh nghiệp cũ | Web, Mobile, API hiện đại |
Tóm tắt cốt lõi cho kỹ sư Backend:
- Nếu bạn xây dựng hệ thống mới (như các dịch vụ ở Hasaki), hãy ưu tiên dùng OIDC.
- Nếu bạn làm việc với các hệ thống tài chính cũ hoặc các tập đoàn yêu cầu hạ tầng khép kín, bạn sẽ thường xuyên gặp SAML.
Đến đây, bạn đã thấy sự khác biệt giữa "Xác thực" (Authentication) và "Cấp quyền" (Authorization) chưa? Đây là kiến thức nền tảng để sang bài sau chúng ta đi vào chi tiết Token – thứ "chìa khóa" mà IdP trao cho bạn.
All rights reserved