Bỏ qua, đến nội dung

Tham số cấu hình OIDC ​

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

Tham số bắt buộc ​

Tham sốKiểuMặc địnhMô tả
issuerstring—URL của OIDC Issuer. Plugin sử dụng OIDC Discovery (/.well-known/openid-configuration) để tự động lấy endpoints. Ví dụ: https://accounts.google.com
clientIdstring—Client ID được cấp bởi Identity Provider
clientSecretstring—Client Secret tương ứng

Tham số scope và token ​

Tham sốKiểuMặc địnhMô tả
scopestringopenid email profileDanh sách scope cách nhau bởi dấu cách. Phải bao gồm openid theo chuẩn OIDC
idTokenSignedResponseAlgstringRS256Thuật toán ký id_token. Các giá trị phổ biến: RS256, ES256, PS256
stateTokenstring—Secret key để ký state parameter (CSRF protection). Nếu không đặt, hệ thống sử dụng key mặc định
exchangeBodyKeysstring[][]Danh sách key bổ sung gửi kèm khi exchange authorization code lấy token. Hữu ích khi IdP yêu cầu thêm parameter

Tham số userinfo ​

Tham sốKiểuMặc địnhMô tả
userInfoMethodstringGETPhương thức HTTP gọi userinfo endpoint: GET hoặc POST
accessTokenViastringheaderCách gửi access_token khi gọi userinfo: header (Authorization Bearer), body (form body), hoặc query (query string)

Tham số user binding ​

Tham sốKiểuMặc địnhMô tả
userBindFieldstringemailField dùng để liên kết user từ IdP với local user. Giá trị hỗ trợ: email hoặc username
fieldMaparray[]Mảng các object mapping từ OIDC claims sang local user fields. Mỗi phần tử có dạng { source: "claim_name", target: "local_field" }
public.autoSignupbooleantrueTự động tạo tài khoản local nếu user chưa tồn tại. Khi false, chỉ user đã có tài khoản mới đăng nhập được

Tham số redirect và network ​

Tham sốKiểuMặc địnhMô tả
httpbooleanfalseDùng HTTP thay vì HTTPS cho redirect URI. Chỉ bật khi phát triển local
portstring—Port tùy chỉnh cho redirect URI. Hữu ích khi chạy sau reverse proxy với port khác
autoRedirectbooleanfalseTự động redirect đến IdP thay vì hiển thị trang đăng nhập. Phù hợp khi chỉ dùng một authenticator duy nhất
skipSSLVerificationbooleanfalseBỏ qua kiểm tra SSL certificate. Chỉ dùng khi debug, không bao giờ bật trong production

Tham số logout ​

Tham sốKiểuMặc địnhMô tả
enableRPInitiatedLogoutbooleanfalseBật RP-initiated logout. Khi user logout khỏi Digiforce, plugin gửi yêu cầu logout đến IdP kèm id_token_hint. Yêu cầu IdP hỗ trợ end_session_endpoint

Redirect URI ​

Redirect URI cần đăng ký tại IdP có dạng:

{protocol}://{host}:{port}{API_BASE_PATH}oidc:redirect

Trong đó:

  • protocol: https (mặc định) hoặc http nếu bật tham số http
  • host: domain của Digiforce
  • port: port tùy chỉnh (nếu có)
  • API_BASE_PATH: mặc định /api/

Ví dụ: https://app.example.com/api/oidc:redirect

Cấu hình qua biến môi trường ​

Tất cả tham số đều có thể cấu hình qua biến môi trường với prefix tương ứng. Ví dụ:

bash
OIDC_ISSUER=https://accounts.google.com
OIDC_CLIENT_ID=xxx
OIDC_CLIENT_SECRET=yyy

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

json
{
  "issuer": "https://accounts.google.com",
  "clientId": "123456.apps.googleusercontent.com",
  "clientSecret": "GOCSPX-xxxxx",
  "scope": "openid email profile",
  "idTokenSignedResponseAlg": "RS256",
  "userBindField": "email",
  "fieldMap": [
    { "source": "email", "target": "email" },
    { "source": "name", "target": "nickname" },
    { "source": "picture", "target": "avatar" }
  ],
  "autoRedirect": false,
  "enableRPInitiatedLogout": true,
  "public": {
    "autoSignup": true
  }
}

Ví dụ cấu hình Keycloak với tùy chỉnh nâng cao ​

json
{
  "issuer": "https://keycloak.example.com/realms/my-realm",
  "clientId": "digiforce-app",
  "clientSecret": "secret-from-keycloak",
  "scope": "openid email profile roles",
  "userInfoMethod": "GET",
  "accessTokenVia": "header",
  "userBindField": "email",
  "http": false,
  "skipSSLVerification": false,
  "enableRPInitiatedLogout": true,
  "public": {
    "autoSignup": true
  }
}