Authentication & Access Control
Authentication and authorization are enforced before any GGNomad operation runs: every caller is authenticated, every field is permission-checked, and every query is scoped to the caller's workspace. This is the same identity layer used across the Burdenoff platform, so GGNomad is enterprise-ready from day one.
How callers authenticate
Single sign-on (OIDC) Travelers, hosts, and operators sign in through single sign-on:
- OpenID Connect for interactive web sign-in
- OAuth 2.0 for service and API access
- OAuth device-code for terminal clients (roadmap surfaces)
- Enterprise identity-provider integration (for example Okta, Azure AD)
API keys Automation and integrations use workspace-scoped credentials issued from the developer portal:
- Bearer-token authentication
- Scoped to a single workspace
- Rotatable and revocable
Access control framework
Role-based access control (RBAC) Every GGNomad operation is permission-gated:
- One identity can hold multiple roles — traveler, host/operator, administrator
- Each role grants a scoped set of
ggnomad:*permissions - Every query and mutation declares the permission it requires, and that permission is checked before the operation runs
Workspace scoping Authorization is bounded by workspace, not just role:
- The workspace comes from your authenticated session, not a client argument
- Every read and write is filtered to that workspace
- An id from one workspace never resolves in another (returns
NOT_FOUND) - Audit fields (
createdBy,onBehalfOf,updatedBy) are stamped on writes
Self vs. shared resources
Access to "your own" data is scoped to the signed-in identity:
- A traveler sees their own bookings, favorites, and trips
- A host sees the listings and booking queue they own
- An administrator's marketplace-wide view is granted by an explicit admin role
- Being signed in is never enough on its own — "my" data is always filtered to the calling identity
API security
Protect every integration call:
- Bearer-token (OAuth / API key) authentication on every request
- Permissions checked before the operation runs
- Rate limiting and quota enforcement per billing plan
- Request validation with typed error codes (
FORBIDDEN,WORKSPACE_REQUIRED)
Best practices
Follow these guidelines:
- Request least-privilege permissions for each integration
- Use separate credentials per integration so they can be rotated
- Treat
FORBIDDENandWORKSPACE_REQUIREDas expected, handled cases - Never assume an id resolves outside its workspace
- Audit role assignments and watch the activity log
Getting started
Set up secure access:
- Sign in via SSO (travelers, hosts, operators)
- Issue a scoped credential for integrations from the developer portal
- Confirm your token's permissions with a read query
- Verify cross-workspace isolation in a development workspace
For details on the API surface, see the API Reference; for the broader posture, see the Security Overview.