This page is the per-provider supplement to the IDP overview. Read that first. Use this guide for any OIDC-compliant provider not covered by the dedicated pages — Firebase, Cognito, OneLogin, Ping, Stytch, Supabase Auth, Microsoft Entra (Azure AD), etc.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.
1. JWT verification
Find these from the provider’s documentation:- Issuer URL (the value of the
issclaim in JWTs) - JWKS URL (usually
<issuer>/.well-known/jwks.jsonper OIDC discovery) - Audience (the value of the
audclaim — typically the provider client ID) - User-ID claim (default
sub) - Group claim (provider-specific; common values:
groups,cognito:groups,roles)
- Click Add Identity Provider.
- Paste the issuer URL and click Discover. When the provider exposes OIDC discovery at
<issuer>/.well-known/openid-configuration, Alter pulls JWKS automatically. - Override the claim mappings when the JWT uses non-standard claim names. Set group / role claims before any user signs in — they lock after first authentication.
- Click Add Provider.
2. OIDC sign-in (optional)
Required only forvault.authenticate() or the Wallet sign-in flow.
In the IDP:
- Create an OIDC application (sometimes called “Web App” or “Confidential Client”).
- Add both redirect URIs from the Alter portal as allowed callbacks.
- When the IDP supports
post_logout_redirect_uri, add the Wallet logout URL. - Copy the Client ID and Client Secret.
- Open the User Authentication (OIDC) section.
- Paste Client ID and Client Secret.
- Save.
3. Webhook deprovisioning (optional)
When the IDP supports outbound webhooks for user lifecycle events:- In the Alter portal → Identity page → Webhooks → Enable Webhooks.
- Copy the signing secret (shown once) and the webhook endpoint URL.
- In the IDP, configure a webhook with:
- URL = the Alter webhook endpoint.
- Authorization header value = the signing secret.
- Subscribe to whatever the IDP names “user deleted” and “user disabled” events.
Common pitfalls
- Issuer mismatch. Some providers (Firebase, Cognito) include a path segment in the issuer (
https://securetoken.google.com/<project-id>,https://cognito-idp.<region>.amazonaws.com/<pool-id>). The portal value must exactly match the JWTissclaim. - Audience formatting. Some providers send a single audience as a string (
"aud": "client-id"); some send an array ("aud": ["client-id"]). Alter handles both, but the portal value must match one of the entries. - Custom claim names. When the provider emits the user ID under something other than
sub(e.g.,user_idfor Firebase), set the user-ID claim mapping accordingly before first sign-in.
Common provider quick-reference
| Provider | Issuer pattern | Group claim |
|---|---|---|
| Firebase | https://securetoken.google.com/<project-id> | firebase.identities (no native groups) |
| Cognito | https://cognito-idp.<region>.amazonaws.com/<user-pool-id> | cognito:groups |
| Microsoft Entra | https://login.microsoftonline.com/<tenant>/v2.0 | groups (configure manifest) |
| Stytch | https://test.stytch.com/v1/sessions (use the public JWKS endpoint they document) | member.organization.organization_id for B2B |
See also
- IDP overview
- JWT identity — runtime pattern.