Skip to main content

Core Concepts

These are the pieces of the LumoAuth model and how they fit together. If you have worked with OAuth or SAML before, most of this will be familiar — the multi-organization and Zanzibar pieces are the main new ones.


Organizations​

An organization is an isolated environment within LumoAuth. Each organization owns its own:

  • Users and user data
  • Roles, permissions, and groups
  • OAuth applications and clients
  • Sign-in settings (MFA, social login, SSO)
  • Audit logs and compliance data
  • Custom domains and branding

Organizations are identified by a slug — a URL-friendly identifier like acme-corp. All organization-scoped resources are under the /orgs/{orgId}/ URL prefix.

If you sell to other companies, create one organization per customer. If you are a single team, you typically have one organization.

URL structure​

/orgs/{orgId}/portal/ → organization admin dashboard
/orgs/{orgId}/portal/applications → OAuth application management
/orgs/{orgId}/portal/users → Users (tabs: Users, Invitations, Groups)
/orgs/{orgId}/portal/roles → Roles & permissions
/orgs/{orgId}/portal/settings/authentication → Sign-in settings
/orgs/{orgId}/portal/settings/login-page → Login page & emails
/orgs/{orgId}/api/v1/oauth/authorize → OAuth 2.0 authorize endpoint
/orgs/{orgId}/api/v1/oauth/token → OAuth 2.0 token endpoint
/orgs/{orgId}/api/v1/scim2.0/Users → SCIM provisioning endpoint

Users​

A user represents a person who can authenticate with LumoAuth. Users belong to exactly one organization. A user has:

  • Credentials — email/password, social accounts, passkeys
  • Roles — one or more roles that grant permissions
  • Groups — group memberships that grant roles by inheritance
  • MFA authenticators — passkeys, LumoAuth app devices, authenticator apps, phone numbers, email codes, and recovery codes
  • Sessions — active login sessions across devices
  • Social accounts — linked accounts at identity providers (Google, GitHub, etc.)

User lifecycle​

Invited / Registered → Email Verified → Active → (Blocked / Deleted)

Users can self-register, be invited by an admin, or be provisioned automatically via SCIM or JIT (just-in-time) provisioning from an external identity provider.

An account belongs to exactly one organization. The same email address can hold an account in several organizations (one per organization). Each of those accounts is joined through its own invitation or sign-up and has its own password and factors. The same email address can create only one organization through the public sign-up.


Roles and permissions​

LumoAuth uses Role-Based Access Control (RBAC) as its default model for authorization.

  • Permissions describe what action can be performed on what resource (e.g., user:read, organization:manage).
  • Roles are named bundles of permissions assigned to users (e.g., admin, editor, viewer).
  • System roles are predefined and cannot be deleted. Custom roles can be defined per organization.

Example​

Role: "Editor"
Permissions:
- article:read
- article:write
- article:publish
- comment:read
- comment:write

Groups​

Groups let you assign roles in bulk. Adding a user to a group gives them every role that the group has.

Group: "Engineering Team"
Roles: [Developer, Deployer]
Members: [alice@example.com, bob@example.com]

OAuth applications (clients)​

An OAuth application — also called a client — represents an app that authenticates users through LumoAuth. Each application has:

  • Client ID — public identifier
  • Client Secret — confidential key, used only by server-side apps
  • Redirect URIs — the callback URLs that OAuth is allowed to redirect to
  • Grant types — which OAuth 2.0 flows the client can use
  • Scopes — what the application is allowed to request

Application types​

TypeGrant typesUse case
Web applicationAuthorization CodeServer-rendered web apps that can hold a client secret
Single-page app (SPA)Authorization Code + PKCE (a one-time secret that protects the sign-in code)JavaScript apps — React, Vue, Angular
Native / mobile appAuthorization Code + PKCEiOS, Android, desktop apps
Machine-to-machineClient CredentialsBackend services, cron jobs, integrations
CLI / IoT deviceDevice authorization (sign in on another device)Command-line tools, smart TVs, input-constrained devices
SAML applicationSAML 2.0 AssertionEnterprise SSO to third-party SaaS

Scopes and claims​

Scopes are permission strings the app requests at login time. Claims are the fields that end up in the ID token and userinfo response. The OIDC spec defines a standard set:

ScopeClaims returned
openidSubject identifier (sub) — required for any OIDC request
profileName, nickname, picture, etc.
emailEmail address, email verification status
addressPostal address
phonePhone number

Custom scopes can be defined per organization to control access to specific APIs.


Tokens​

LumoAuth issues several token types, each with a different purpose:

TokenFormatPurposeLifetime
Access tokenJWTAuthorize API requests (Bearer token)Short — minutes to hours
ID tokenJWTIdentify the authenticated user to the appShort
Refresh tokenOpaqueExchange for new access tokens without re-prompting the userLong — days to months
Authorization codeOpaqueOne-time code exchanged for tokens at the /token endpointVery short — minutes
Device codeOpaqueDevice-flow polling codeMinutes

A JWT (JSON Web Token) is a signed JSON payload. Your service can verify the signature offline with LumoAuth's public keys, then trust the claims inside — no network call needed per request.


Authentication flows​

LumoAuth supports these OAuth 2.0 / OIDC flows:

FlowBest forDescription
Authorization CodeServer-rendered web appsBrowser redirect to LumoAuth, code exchanged server-side for tokens
Authorization Code + PKCESPAs, mobile appsSame as above, plus a PKCE code verifier so a stolen code is useless
Client CredentialsService-to-serviceNo user involved; the service authenticates with its own credentials
Device AuthorizationCLIs, smart TVsDevice shows a short code; the user enters it on a second device
Refresh TokenAllExchange a refresh token for a new access/ID token
CIBA (client-initiated backchannel authentication)Decoupled authClient initiates login; user approves out-of-band (e.g., via a push)

Organization portal sections​

The organization portal at /orgs/{orgId}/portal/ groups its pages in the sidebar as follows (see the portal tour for every page, and the portal page → guide map for where each one is documented):

The portal dashboard with the sidebar on the left

Home​

  • Dashboard (/orgs/{orgId}/portal/) — sign-ins, active users, sign-ups, tokens, audit events and failure reasons over 24h to 90 days, top applications, and a setup checklist
  • Get started (/orgs/{orgId}/portal/onboarding) — guided setup, quickstarts and your organization's credentials

AI Agents​

  • Agents (/orgs/{orgId}/portal/agents) — agent registration and management; tabs for AAuth credentials, AAuth resources and Connections
  • Approvals (/orgs/{orgId}/portal/approvals) — requests waiting on a human
  • MCP servers (/orgs/{orgId}/portal/mcp-servers) — MCP server registration
  • Agent rules (/orgs/{orgId}/portal/agents/policies) — access rules, auto-approve rules and cross-app access
  • Agent activity (/orgs/{orgId}/portal/caep-dashboard) — fleet activity and security signals

Identity​

  • Users (/orgs/{orgId}/portal/users) — users, invitations (/portal/users/invitations) and groups (/portal/groups) as tabs
  • Customer organizations (/orgs/{orgId}/portal/organizations) — the companies and teams your product serves

Access control​

  • How access works (/orgs/{orgId}/portal/access) — the three models side by side
  • Roles & permissions (/orgs/{orgId}/portal/roles, permissions at /portal/permissions) — role definitions and the permission catalog; Draft with AI opens natural-language policy authoring (/portal/policies/author)
  • Relationships (/orgs/{orgId}/portal/zanzibar/) — relationship-based access control
  • Attribute rules (/orgs/{orgId}/portal/abac/) — attribute-based policies
  • Test access (/orgs/{orgId}/portal/permissions/tester) — try authorization decisions live

Applications & developer tools​

  • Applications (/orgs/{orgId}/portal/applications) — create, edit and delete OpenID Connect and SAML applications, rotate client secrets, manage per-application social login and branding
  • Quickstarts (/orgs/{orgId}/portal/onboarding/quickstart), API keys (/portal/settings/api-keys), API explorer (/portal/developer/api-explorer), Test login (/portal/developer/test-login), JWT inspector (/portal/developer/jwt-inspector) and Endpoints & metadata (/portal/metadata)

Security​

  • Sign-in settings (/orgs/{orgId}/portal/settings/authentication) — identity methods, login flow, password standards, MFA policy
  • Adaptive security (/orgs/{orgId}/portal/settings/adaptive-auth) — risk-based sign-in decisions
  • Signing keys (/orgs/{orgId}/portal/signing-keys) — token signing keys and rotation
  • Audit logs (/orgs/{orgId}/portal/audit-logs) — append-only audit trail

Settings​

  • Integrations (/orgs/{orgId}/portal/integrations) — one hub with a section per capability: enterprise SSO (SAML at /portal/saml-idps, OIDC at /portal/oidc-idps), social login, LDAP / Active Directory, SCIM (inbound and outbound), observability (log sinks such as Datadog, Axiom and Honeycomb), webhooks and more
  • Login page & emails (/orgs/{orgId}/portal/settings/login-page and /portal/settings/email-templates) — branding of the hosted pages and the transactional emails
  • Custom domains (/orgs/{orgId}/portal/custom-domains), Billing (/portal/billing) and Data export (/portal/data-export)

GDPR & privacy​

  • Privacy overview (/orgs/{orgId}/portal/gdpr), Subject requests (/portal/gdpr/dsr) and Consent records (/portal/gdpr/consent-records)

Help​

  • Help for this page opens the guide for the current page; Documentation opens this site

Next steps​

Standards used on this page​

Plain nameStandard
Device authorization (sign in on another device)RFC 8628
JSON Web Token (JWT)RFC 7519

See the standards reference for what each one covers and how LumoAuth uses it.