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 Tham Chiếu API

Tham Chiếu API

Tài liệu chi tiết các endpoint, tham số yêu cầu và cấu trúc phản hồi của máy chủ OAuth 2.0.

1. Endpoint Phân Quyền (Authorize Endpoint)

URL: https://accounts.lequangkhai.id.vn/authorize
Phương thức: GET
Tham Số Kiểu Bắt Buộc Mô Tả Giá Trị Mẫu
client_id string Có Định danh client đã đăng ký trong hệ thống client_7a8b9c...
response_type string Có Luôn là giá trị cố định code code
redirect_uri string Có URL callback nhận mã (phải khớp chính xác) https://myapp.com/callback
scope string Tùy chọn Các quyền hạn yêu cầu (cách nhau bởi khoảng trắng) openid profile email
state string Có Chuỗi ngẫu nhiên phòng chống tấn công CSRF xyz987_state_rand

Phản Hồi Thành Công

Máy chủ chuyển hướng trình duyệt về redirect_uri:

HTTP/1.1 302 Found
Location: https://myapp.com/callback?code=AUTH_CODE_VALUE&state=xyz987_state_rand

2. Endpoint Mã Thông Báo (Token Endpoint)

URL: https://accounts.lequangkhai.id.vn/api/token
Phương thức: POST
Content-Type: application/x-www-form-urlencoded

Trao Đổi Mã Lấy Access Token (grant_type=authorization_code)

Tham Số Kiểu Bắt Buộc Mô Tả
grant_type string Có Phải là authorization_code
code string Có Mã ủy quyền nhận được từ bước authorize
client_id string Có Định danh client của ứng dụng
client_secret string Tùy client Bắt buộc với Confidential Clients, không áp dụng cho Public Clients
redirect_uri string Có Phải trùng khớp với redirect_uri đã gửi trong bước authorize

Làm Mới Access Token (grant_type=refresh_token)

Tham Số Kiểu Bắt Buộc Mô Tả
grant_type string Có Phải là refresh_token
refresh_token string Có Mã refresh token đã nhận trước đó
client_id string Có Định danh client của ứng dụng

Phản Hồi Thành Công (HTTP 200 OK)

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "rt_9876543210abcdef",
  "scope": "openid profile email"
}

3. Endpoint Thông Tin Người Dùng (UserInfo Endpoint)

URL: https://accounts.lequangkhai.id.vn/api/userinfo
Phương thức: GET
Tiêu đề bắt buộc: Authorization: Bearer <ACCESS_TOKEN>

Phản Hồi Thành Công (HTTP 200 OK)

{
  "sub": "1042",
  "username": "nguyenvana",
  "email": "[email protected]",
  "email_verified": true,
  "name": "Nguyễn Văn A",
  "avatar_url": "https://example.com/avatar.jpg"
}

Phản Hồi Khi Lỗi (HTTP 401 Unauthorized)

{
  "error": "invalid_token",
  "error_description": "Mã thông báo không hợp lệ hoặc đã hết hạn truy cập."
}

Mã Trạng Thái HTTP (Status Codes)

HTTP Code Ý Nghĩa Mô Tả Kỹ Thuật
200 OK Yêu cầu hoàn tất thành công, dữ liệu JSON đính kèm trong body.
302 Found Chuyển hướng trình duyệt tới địa chỉ callback hoặc màn hình đăng nhập.
400 Bad Request Tham số gửi lên bị thiếu, sai kiểu dữ liệu hoặc không hợp lệ.
401 Unauthorized Token truy cập bị thiếu, không hợp lệ hoặc đã quá hạn.
500 Server Error Lỗi nội bộ hệ thống hoặc sự cố cơ sở dữ liệu.
Cập nhật gần nhất: Tháng 10, 2025
Lên đầu trang