Bỏ qua, đến nội dung

Cấu hình chi tiết — IDP OAuth

OAuth 2.1 Scopes

ScopeDữ liệu trả vềMô tả
openidID token (JWT)Bắt buộc cho OpenID Connect flow
profileHọ tên, avatar, nicknameThông tin hồ sơ cơ bản
emailĐịa chỉ email, email_verifiedĐịa chỉ email và trạng thái xác minh
offline_accessRefresh tokenCho phép cấp refresh token để duy trì phiên lâu dài

Grant Types

Grant typeMô tảSử dụng khi
authorization_codeFlow chuẩn OAuth 2.1, an toàn nhấtWeb app có backend server
authorization_code + PKCEFlow cho ứng dụng không có backend an toànSPA, mobile app
refresh_tokenCấp mới access token khi hết hạnSession dài hạn

Flow Authorization Code

Flow Authorization Code + PKCE

Cấu hình Token

Tham sốMặc địnhMô tả
Access token TTL3600s (1 giờ)Thời gian hiệu lực access token
Refresh token TTL86400s (1 ngày)Thời gian hiệu lực refresh token
ID token TTL3600s (1 giờ)Thời gian hiệu lực ID token (JWT)
Token formatJWTĐịnh dạng token
Tham sốMô tả
Application logoLogo hiển thị trên trang đồng ý
Privacy policy URLLiên kết đến chính sách bảo mật
Terms of service URLLiên kết đến điều khoản sử dụng
Skip consentBỏ qua màn hình đồng ý (chỉ cho ứng dụng nội bộ đáng tin cậy)

JWKS và Key Rotation

Plugin tự động quản lý RSA key pair cho JWT signing:

  • Key mặc định: RSA 2048-bit
  • JWKS endpoint: GET /api/idpOAuth/jwks — cung cấp public key cho client verify token
  • Key rotation: Hỗ trợ tạo key mới, key cũ vẫn verify được trong thời gian chuyển đổi

Endpoints chi tiết

Authorization Endpoint

GET /api/idpOAuth/auth
ParameterMô tả
client_idClient ID của ứng dụng
redirect_uriURL callback (phải khớp với cấu hình)
response_typecode
scopeDanh sách scope (cách bằng dấu cách)
stateGiá trị ngẫu nhiên để chống CSRF
code_challengePKCE code challenge (tuỳ chọn)
code_challenge_methodS256 (nếu dùng PKCE)

Token Endpoint

POST /api/idpOAuth/token
ParameterMô tả
grant_typeauthorization_code hoặc refresh_token
codeAuthorization code (khi grant_type = authorization_code)
redirect_uriURL callback (phải khớp với lúc authorize)
client_idClient ID
client_secretClient Secret
refresh_tokenRefresh token (khi grant_type = refresh_token)
code_verifierPKCE verifier (nếu dùng PKCE)

Discovery Endpoints

URLMô tả
GET /api/.well-known/openid-configurationOpenID Connect Discovery (OIDC)
GET /api/.well-known/oauth-authorization-serverOAuth 2.0 Authorization Server Metadata

Trả về JSON chứa tất cả endpoint và capability của IdP.

Quản lý Application qua API

typescript
// Tạo OAuth application
await api.resource('oauthApplications').create({
  values: {
    name: 'My External App',
    redirectUris: ['https://myapp.com/callback'],
    scopes: ['openid', 'profile', 'email'],
    grantTypes: ['authorization_code', 'refresh_token'],
  },
});

// Lấy danh sách applications
const { data } = await api.resource('oauthApplications').list();

Cấu hình Resource Server

Plugin hỗ trợ đăng ký resource server để cấp access token cho API cụ thể:

Tham sốMô tả
identifierURI định danh resource server
scopeDanh sách scope hỗ trợ
accessTokenTTLTTL riêng cho access token của resource này
accessTokenFormatFormat token (jwt hoặc opaque)