Làm việc với AI

Dùng bản tóm tắt tối ưu cho ChatGPT, Claude, Grok hoặc Cursor.

Mở bản Markdown cho AI
Hãy đọc docs/AI-CONTEXT.md trước và tích hợp ứng dụng hiện tại với PHP SSO Service theo OAuth 2.0 Authorization Code Flow và OpenID Connect. Kiểm tra framework và session system của ứng dụng client; triển khai login route, callback route, state validation, PKCE nếu là public client, token exchange, UserInfo request và tạo session nội bộ. Dùng biến môi trường cho SSO_BASE_URL, CLIENT_ID, CLIENT_SECRET và REDIRECT_URI. Không sửa source code của SSO Service, không commit hoặc log secret/token, không thay đổi OAuth contract, và bổ sung hướng dẫn cấu hình cùng kiểm thử.
Tài liệu Tổng Quan

Tổng Quan

Giới thiệu tổng quan về kiến trúc xác thực tập trung và phân quyền truy cập qua giao thức OAuth 2.0.

OAuth 2.0 và OpenID Connect

OAuth 2.0 (RFC 6749) là khung phân quyền tiêu chuẩn công nghiệp cho phép các ứng dụng bên thứ ba truy cập tài nguyên bảo mật thay mặt người dùng mà không cần chia sẻ thông tin đăng nhập trực tiếp. Kết hợp cùng OpenID Connect (OIDC), hệ thống cung cấp lớp xác thực danh tính hoàn chỉnh:

  • Ủy quyền người dùng thông qua máy chủ SSO tập trung.
  • Phát hành mã thông báo truy cập dạng JWT (JSON Web Token) có chữ ký số.
  • Cho phép ứng dụng khách gọi API tài nguyên mà không lưu trữ mật khẩu người dùng.
  • Kiểm soát phạm vi truy cập (Scopes) chi tiết theo từng ứng dụng.

Kiến Trúc & Khả Năng Cốt Lõi

Authorization Code Flow

Luồng phân quyền tiêu chuẩn dành cho các ứng dụng có backend bí mật (Confidential Clients), sử dụng authorization code để đổi lấy access token.

PKCE Extension (RFC 7636)

Proof Key for Code Exchange ngăn chặn tấn công đánh cắp mã ủy quyền trên các client công khai như SPA (React, Vue) và ứng dụng di động.

JWT Tokens (HMAC-SHA256)

Access token dạng JWT tự chứa thông tin xác thực (stateless), giúp Resource Server kiểm tra tính hợp lệ tức thì mà không cần truy vấn cơ sở dữ liệu.

Token Refresh

Cấp mới access token định kỳ qua refresh token mà không làm gián đoạn trải nghiệm hoặc yêu cầu người dùng đăng nhập lại.

Phạm Vi Quyền Hạn (Scopes)

Hệ thống hiện tại hỗ trợ các phạm vi truy cập sau:

Scope Mô Tả Chức Năng Thuộc Tính Cung Cấp
openid Xác thực định danh người dùng qua chuẩn OpenID Connect (Bắt buộc). sub, iss, aud, iat, exp
profile Truy cập thông tin hồ sơ cơ bản của người dùng. name, username, avatar_url
email Truy cập địa chỉ email chính thức và trạng thái xác thực. email, email_verified

Mô Hình Ứng Dụng Khách

1. Ứng Dụng Phía Máy Chủ (Confidential Clients)

Các ứng dụng PHP, Node.js, Python, Go chạy trên máy chủ riêng có khả năng lưu trữ bí mật client_secret an toàn.

2. Ứng Dụng Đơn Trang (Public Clients - SPA)

Các ứng dụng React, Vue, Angular chạy trên trình duyệt người dùng. Luồng này bắt buộc kích hoạt cơ chế PKCE và không dùng client secret.

3. Ứng Dụng Di Động & Desktop

Các ứng dụng Flutter, React Native, iOS, Android sử dụng custom URL scheme hoặc Universal Link để nhận callback chuyển hướng.

Nguyên Tắc Bảo Mật Bắt Buộc

  • Giao thức HTTPS: Tất cả các điểm cuối ủy quyền và trao đổi mã bắt buộc thực hiện qua kết nối mã hóa TLS/HTTPS trong môi trường sản xuất.
  • Tham số State: Bắt buộc khởi tạo chuỗi ngẫu nhiên state và kiểm tra tính toàn vẹn khi nhận callback nhằm triệt tiêu nguy cơ tấn công CSRF.
  • Thời hạn Authorization Code: Mã ủy quyền có hiệu lực tối đa 10 phút và chỉ được sử dụng một lần duy nhất.
  • Kiểm duyệt Redirect URI: URI chuyển hướng phải khớp chính xác tuyệt đối với danh sách đã đăng ký trong bảng điều khiển, không hỗ trợ ký tự đại diện.
Cập nhật gần nhất: Tháng 10, 2025
Lên đầu trang