Bỏ qua, đến nội dung

Tham số cấu hình Apple Auth

Tài liệu chi tiết tất cả tham số cấu hình của plugin @digiforce-nc/plugin-auth-apple.

Tham số bắt buộc

Tham sốKiểuMặc địnhMô tả
clientIdstringApple Services ID. Ví dụ: com.example.digiforce.auth. Tạo trong Apple Developer → Identifiers → Services IDs
clientSecretstringJWT secret ký bằng Apple private key (.p8). Thời hạn tối đa 6 tháng, cần renew định kỳ

Tham số redirect

Tham sốKiểuMặc địnhMô tả
redirectUrlstringURL redirect tùy chỉnh sau đăng nhập thành công. Nếu không đặt, redirect về URL mặc định của ứng dụng

Yêu cầu APP_BASE_URL

Plugin bắt buộc biến môi trường APP_BASE_URL để xây dựng callback URL. Nếu thiếu, redirect URL sẽ sai và Apple trả lỗi.

bash
APP_BASE_URL=https://app.example.com

Tham số scope và token

Tham sốKiểuMặc địnhMô tả
scopestringemail nameScope yêu cầu. Apple hỗ trợ: email, name. Cách nhau bằng dấu cách
idTokenSignedResponseAlgstringRS256Thuật toán ký id_token. Apple luôn dùng RS256

Tham số user binding

Tham sốKiểuMặc địnhMô tả
fieldMaparray[]Mapping từ Apple claims sang local user fields
userBindFieldstringemailField dùng để liên kết user. Chỉ hỗ trợ email — binding theo username chưa được implement
public.autoSignupbooleantrueTự động tạo tài khoản nếu user chưa tồn tại

userBindField = email only

Khác với OIDC plugin hỗ trợ cả emailusername, Apple plugin chỉ hỗ trợ email cho userBindField. Đặt giá trị username sẽ không hoạt động.

Apple claims có sẵn

Claims từ id_token của Apple:

ClaimMô tả
subApple user ID (duy nhất, không đổi)
emailEmail user (real hoặc relay)
email_verifiedEmail đã verified hay chưa
is_private_emailUser dùng "Hide My Email" hay không

Claims từ user JSON (chỉ có lần đầu authorize):

FieldMô tả
name.firstNameTên
name.lastNameHọ
emailEmail (trùng với id_token)

Ví dụ fieldMap

json
[
  { "source": "email", "target": "email" },
  { "source": "sub", "target": "appleId" },
  { "source": "name", "target": "nickname" }
]

TIP

Trường name chỉ có giá trị ở lần authorize đầu tiên. Các lần sau, name sẽ là null.

Ví dụ cấu hình đầy đủ

json
{
  "clientId": "com.example.digiforce.auth",
  "clientSecret": "eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9...",
  "scope": "email name",
  "idTokenSignedResponseAlg": "RS256",
  "userBindField": "email",
  "fieldMap": [
    { "source": "email", "target": "email" },
    { "source": "sub", "target": "appleId" }
  ],
  "public": {
    "autoSignup": true
  }
}

Callback URL

Callback URL được xây dựng từ APP_BASE_URL:

{APP_BASE_URL}/api/apple:redirect

URL này phải đăng ký trong Apple Developer → Services ID → Return URLs.

Renew Client Secret

Client secret JWT có thời hạn tối đa 6 tháng. Khi hết hạn:

  1. Tạo JWT mới bằng private key .p8
  2. Cập nhật clientSecret trong authenticator settings
  3. Không cần tạo key mới — cùng .p8 key có thể ký nhiều JWT