1️⃣ OAuth 2.0 là gì?

OAuth 2.0 là framework ủy quyền (Authorization).

👉 Nó cho phép:

Ứng dụng A truy cập tài nguyên của user ở hệ thống B mà không cần biết mật khẩu.

Ví dụ:

  • Đăng nhập bằng Google
  • App lấy danh bạ Google
  • Web lấy dữ liệu Facebook

Chuẩn được định nghĩa bởi Internet Engineering Task Force.

Mục tiêu chính:

✔ Ủy quyền truy cập API
❌ Không sinh ra để xác thực danh tính


2️⃣ OpenID Connect (OIDC) là gì?

OIDC = OAuth 2.0 + xác thực (Authentication layer)

Nó được phát triển bởi OpenID Foundation.

OIDC thêm vào OAuth:

  • ID Token (JWT)
  • Thông tin user (email, name, picture)
  • Chuẩn hóa login flow

👉 Nếu OAuth trả về:

access_token

👉 Thì OIDC trả thêm:

id_token (JWT có user info)

3️⃣ SSO là gì?

SSO (Single Sign-On)mô hình đăng nhập một lần dùng nhiều hệ thống.

Ví dụ:

  • Đăng nhập 1 lần dùng Gmail, Drive, YouTube
  • Doanh nghiệp login 1 lần dùng ERP, HRM, CRM

SSO không phải protocol.
Nó là kiến trúc.

SSO có thể dùng:

  • OAuth2
  • OIDC
  • SAML

Ví dụ hệ thống của Google hay Microsoft đều dùng OIDC để làm SSO.


🔥 So sánh trực tiếp

Tiêu chíOAuth2OIDCSSO
Mục đíchỦy quyềnXác thực + Ủy quyềnTrải nghiệm login
Có ID Token?Tùy
Dùng cho login?Không chuẩnChuẩn
Là protocol?Không

🧠 Ví dụ thực tế cho anh (dev)

Case 1: Web anh cần login bằng Google

👉 Dùng OIDC


Case 2: Web anh chỉ cần truy cập Google Drive của user

👉 Dùng OAuth2


Case 3: Anh có 5 website nội bộ muốn login chung

👉 Xây hệ thống SSO

  • Backend auth server dùng OIDC
  • Các site redirect về đó

🎯 Kết luận đơn giản

OAuth2 = Cho phép truy cập
OIDC   = Xác thực người dùng
SSO    = Đăng nhập 1 lần dùng nhiều nơi