Skip to content

Authentication

GFN uses JWT-based authentication for both client-server communication and inter-service authentication on the rig.

Client Authentication

JWT Token

From vendor_beautified.js:

javascript
// JWT token injection into WebRTC/streaming requests
case 1: st("GFNJWT ", token)   // Prepends "GFNJWT " to token
authTokenCallback()             // Callback for token refresh

The GFNJWT prefix distinguishes GFN tokens from other auth schemes.

IPC Bridge Commands

SET_AUTH_INFO    ← Full authentication info object
SET_AUTH_TOKEN   ← JWT token string

LOFN Key

The LofnKeyInfoDef protobuf and lofnDataSendTimeoutMs suggest an encryption key exchange mechanism (LOFN = likely "Local On-Rig Negotiation"):

json
{
  "GcisConnector": {
    "lofnDataSendTimeoutMs": 3000
  }
}

Server-Side Authentication

Provision Manager (PM) Auth

PM communication uses mutual TLS:

json
{
  "PMConnector": {
    "authEnabled": true,
    "nonceLengthBytes": 16,
    "crlCacheTimeMin": 720,
    "cipherList": "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:..."
  }
}

Server certificate requirements:

  • CN: pm.np-ams-06.svc.cluster.local
  • Issuer: GFN PM - API Server Zone NP-AMS-06 CA 02

GSG (Game Seat Gateway) Auth

API key-based authentication, refreshed every 5 minutes:

json
{
  "GSGConnector": {
    "apiKeyRefreshPeriodSec": 300
  }
}

Auth Info Protobuf

AuthInfoDef covers:

  • Authentication protocol types
  • Error codes for auth failures
  • Token validation states

AuthorizationInfoDef covers:

  • User authorization time limits
  • Storage authorization
  • User identity data

Entitlement Codes

From AuthInfoDef and EntitlementInfoDef:

CodeDescription
INVALID__AUTHENTICATION_MALFORMED_STATUSMalformed auth token
INVALID__AUTHENTICATION_NOT_FOUND_STATUSAuth not found
INVALID__AUTHENTICATION_EXPIRED_STATUSToken expired
INVALID__AUTHENTICATION_CREDENTIALS_STATUSBad credentials
INVALID__AUTHENTICATION_UNKNOWN_TOKEN_STATUSUnknown token type
INVALID__AUTHENTICATION_EMAIL_NOT_VERIFIED_STATUSEmail unverified
INVALID__AUTHENTICATION_UNSUPPORTED_PROTOCOL_STATUSUnsupported protocol
AUTH__FAILURE_STATUSGeneric auth failure
ENTITLEMENT__FAILURE_STATUSEntitlement check failed
EULA__UNACCEPTED_STATUSEULA not accepted

Steam Authentication

Steam sessions use dedicated protobuf types:

  • SteamSessionDef — Steam session with launch parameters
  • SteamTokenFilesSessionDef — Steam auth token files for login

Steam-specific error codes:

CodeDescription
STEAM__GUARD_REQUIRED_STATUSSteam Guard 2FA required
STEAM__GUARD_INVALID_STATUSInvalid Steam Guard code
STEAM__LOGIN_REQUIRED_STATUSSteam login required
STEAM__PROFILE_PRIVATE_STATUSSteam profile is private

UEK (User Encryption Key)

UEK__RETRIEVAL_FAILED

The User Encryption Key is used for encrypting user save data in cloud storage. If retrieval fails, cloud saves may be unavailable.

SSH Key (Linux GameSeat)

For GameSeat2 (Linux backend) SSH access:

LinuxGameseatSshPubKey: ssh-rsa AAAAB3NzaC1yc2EAAAADAQAB...

A 4096-bit RSA key used for backend SSH communication.

AWS Credentials (UAD ML)

The UadMLPlugin uses dedicated AWS credentials for SageMaker access (from secure_userdata.txt):

AwsAccesKeyId: AKIA45MWRG7CU2W6USPQ
EncryptionSecretKey: [redacted]

These credentials scoped to SageMaker inference endpoints only.

admindesk.top — Reversed & documented from Asgard rig backups and GCIS plugin binaries.