Groundfloor Docs

IdPlane Integration

How Control Plane authenticates Customer Portal and API users via IdPlane at auth.groundfloor.cloud.

IdPlane is Groundfloor's authentication service (auth.groundfloor.cloud). Control Plane uses it for the Customer Portal (app.groundfloor.cloud) and Operator Admin (admin.groundfloor.cloud). Every authenticated /v1/* request carries a Bearer JWT issued by IdPlane.

This page covers Control Plane auth — signing into Groundfloor's own portals and APIs. Optional per-workspace site auth is a separate feature; see Workspace site auth.

Flow

User → IdPlane (auth.groundfloor.cloud) → access_token (JWT)
     → Customer Portal or API client
     → Authorization: Bearer <token>
     → Control Plane verifies iss + signature
     → sub resolved to internal users.id
     → SpiceDB CheckPermission for the requested action

Principal model

After JWT verification, handlers receive a Principal with:

FieldSourceUsage
subject_idJWT subStable IdPlane user ID
emailJWT claimDisplay, membership lookup
scopesJWTOptional fine-grained claims

Control Plane maps sub → internal users.id on each request. Authorization always uses the internal user ID when writing SpiceDB relationships.

Environments

SurfaceProductionDevelopment
IdPlanehttps://auth.groundfloor.cloudShared or local IdPlane
Customer Portalapp.groundfloor.cloudlocalhost:3000
Control Plane APIplatform.groundfloor.cloudlocalhost:8088

Tenant provisioning

In production, customers typically do not self-serve account creation. Groundfloor operators provision accounts with an owner email unless customer self-serve is enabled for the cell.

On create, Control Plane:

  1. Creates or attaches the IdPlane user
  2. Upserts the Portal users row
  3. Grants owner membership on the new account

One human may belong to multiple accounts (same sub, multiple memberships).

API authentication

See API Authentication for headers, error codes, and curl examples. Obtain tokens with gf login or an OIDC client against IdPlane — see Developers.

On this page