1.7 KiB
1.7 KiB
WHMCS single sign-on (Phase D)
HexaHost GameCloud uses one-time SSO tickets to bridge WHMCS and the customer panel without long-lived tokens in URLs.
Flow
- WHMCS calls
ServiceSingleSignOnorAdminSingleSignOnin the server module. - The module requests
POST /api/v1/integrations/whmcs/services/:externalServiceId/sso. - GameCloud stores a hashed ticket (60s TTL, single use) and returns
redirectUrl. - WHMCS redirects the browser to
{APP_URL}/auth/sso?ticket=.... - The web app calls
POST /api/v1/integrations/whmcs/auth/sso/consume— actually/auth/sso/consume. - GameCloud sets a normal HTTP-only session cookie and returns an allowlisted
redirectPath.
Ticket properties
Stored server-side (hashed):
- GameCloud user and server IDs
- WHMCS installation, client, user, and service IDs
- Target path (allowlisted)
- Issuer (
integrationId) and audience (APP_URL) - Nonce (replay protection at ticket layer)
Admin SSO / impersonation
kind=admin creates an impersonation session:
UserSession.isImpersonation = true- Metadata includes WHMCS admin user reference
- Full audit events:
whmcs.sso.admin_created,whmcs.sso.admin_consumed - Panel shows an amber support banner
Allowlisted redirect paths
/dashboard/servers/servers/{serverId}/servers/{serverId}/{console|files|properties|players|worlds|backups|addons}
Arbitrary external URLs are rejected.
WHMCS configuration
Server module hostname must match APP_URL origin used for ticket audience validation.
Security notes
- Tickets expire after 60 seconds
- Each ticket is single-use
- Only the WHMCS integration API (HMAC) can mint tickets
- Suspended or terminated services cannot obtain SSO tickets