Bring your own IdP

The console signs in through OIDC. The quickstart uses the bundled eitri-oidc issuer, but any OIDC provider works—Google, Authentik, Okta, Keycloak. Point the server at yours and you never install eitri-oidc; the tarball isn't even on the box.

Register a client

At your IdP, register a confidential web client with:

Note the client ID and secret it gives you.

Fill the oidc block

In server.json:

"oidc": {
  "issuer": "https://id.example.com",
  "client_id": "eitri-console",
  "client_secret": "...",
  "public_url": "https://eitri.example.com",
  "allowed_domains": ["example.com"],
  "allowed_identities": ["alex@example.com"]
}

The signup gate

allowed_domains and allowed_identities are the signup gate. If either is set, an identity matching neither is rejected at callback—no tenant created. Leave both unset for open signup (anyone your IdP authenticates gets a tenant).

Each new identity's first sign-in creates its own tenant.