2.7 KiB
Authentication and Service Identity Contracts
Platform bearer sessions
- Login and first-user registration issue a random bearer token with an eight-hour expiry.
- Strict production HTTP routes deliver the session through an
HttpOnly,SameSite=Strictcookie and omit it from JSON.X-Auth-Token-Response: beareris an explicit CLI compatibility mode. - Durable stores keep only
AuthSessionRecord.tokenHash, owner, generation, status, and lifecycle timestamps. - Logout and rotation set
status=revokedandrevokedAt; rotation issues a distinct generation. - Missing, unknown, expired, revoked, or disabled-user sessions return a safe
401 unauthorizederror.
Authorization roles
platform-admin: user/provider/plugin installation and state, Run endpoint administration, platform metrics, and global internal resource creation.- server owner: server membership, runtime binding changes, destructive/archive operations, and all visible server actions.
- server administrator: non-owner operational access to assigned server resources, but no owner-only membership or secret/key rotation.
- Run service: control/job/log/artifact channels for its current endpoint session; it cannot use browser bearer authority.
Job, log, artifact, runtime-binding, distribution, and plugin-bridge services resolve the target server and repeat ownership checks independently from the HTTP router.
Run signed envelope
Component-authenticated Run hello responses advertise signed-envelope.v1.required. Subsequent HTTP channel calls carry X-Run-Endpoint, X-Run-Timestamp (Unix seconds), X-Run-Nonce, and X-Run-Signature (hex HMAC-SHA256).
The canonical payload is METHOD + "\n" + PATH + "\n" + TIMESTAMP + "\n" + NONCE + "\n" + SHA256(BODY). The current Run session token is the HMAC key. The platform rejects endpoint mismatch, invalid signatures, timestamps outside a five-minute window, expired/revoked sessions, and replayed nonces. Legacy non-component local test sessions remain an explicit compatibility path and advertise the envelope as optional.
Secret boundary
Platform snapshots may contain password verifiers, bearer/Run token hashes, encrypted component-key ciphertext, fingerprints, generations, and scoped secret:///vault:// references. They never contain raw bearer tokens, raw component keys, provider key values, host paths, or direct sockets. Browser DTOs expose secret presence/configured flags only.
Component-key ciphertext uses an injectable AES-GCM envelope derived from PLATFORM_SECRET_ENVELOPE_KEY; the built-in key is a disposable-development fallback only. This boundary is not a production KMS/vault. External key wrapping, KMS/HSM integration, multi-node replay coordination, envelope-key migration, and secret-value rotation remain deferred risks.