Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.alterauth.com/llms.txt

Use this file to discover all available pages before exploring further.

The identity provider (IDP) is the external service that authenticates the app’s end users. When one is configured, Alter verifies the JWTs the IDP issues, resolves which user is making each call, and looks up that user’s grants automatically. One IDP per app. Skip this page for backend-only apps that never see end users.

What gets configured

Three concentric layers, each optional after the previous:
  1. JWT verification (required) — issuer URL, JWKS URL, audience, claim mappings.
  2. OIDC sign-in (optional) — adds a sign-in flow for app.authenticate() and the Wallet.
  3. Webhook deprovisioning (optional) — real-time revocation when the IDP deletes a user.
Claim mappings (user-ID claim, group claim, role claim) lock after the first user signs in. Configure non-default claims before testing the first sign-in.

Supported providers

ProviderPath
Auth0, Clerk, OktaFirst-class — pick the tab below.
Other standards-compliant OIDC providers (OneLogin, Ping, Stytch, JumpCloud, …)Use Custom OIDC — supply issuer, JWKS, audience, claim mappings.
Keycloak, Microsoft Entra ID, Amazon Cognito, Firebase Auth, Supabase AuthBroker through Auth0, Clerk, or Okta. Direct integration is rejected at validation time.

Setup by provider

1. JWT verification

In the Auth0 Dashboard:
  1. Pick the API or application whose JWTs Alter should accept.
  2. Note the Issuer URL (https://<tenant>.us.auth0.com/ or the custom-domain URL) and Audience.
In the Alter portal → app’s Identity page:
  1. Add Identity Provider → paste the issuer URL → Discover. Auth0 is recognized; claim mappings pre-fill.
  2. Paste the audience.
  3. For group-based authorization: add an Auth0 Action emitting a https://alter.dev/groups (or any namespaced) claim on the access token. Map it in the portal before the first sign-in.
  4. Add Provider.

2. OIDC sign-in (optional)

Required only for app.authenticate() or the Wallet sign-in flow.In Auth0: Applications → Create Application → Regular Web Application. Paste both Alter redirect URIs into Allowed Callback URLs (comma-separated). Paste the Wallet logout URL (bare URL, no query params) into Allowed Logout URLs. Copy Client ID and Client Secret.In Alter: User Authentication (OIDC) section → paste credentials → Save.

3. Webhook deprovisioning (optional)

In Alter: Webhooks → Enable → copy the signing secret and endpoint URL (shown once).In Auth0: Monitoring → Streams → Create Stream → Custom Webhook. Payload URL = the Alter endpoint. Authorization Token = the signing secret. Filter events to sdu (user deleted), ublkdu (user blocked), ubuu (user unblocked).

Common pitfalls

  • Custom domain mismatch — JWTs use the custom domain but the portal has the tenant URL (or vice versa). Match exactly what’s in the JWT iss claim.
  • Missing group claim — Auth0 emits no groups by default. Without an Action, group-bound grants don’t work.

What’s next

Call APIs on behalf of users

Runtime flow using the configured IDP.

Identity resolution

How the JWT becomes a grant.

Audit logs

JWT-attributed audit rows.