This page is the per-provider supplement to the IDP overview. Read that first.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
In the Okta Admin Console:- Pick the Authorization Server whose JWTs Alter should accept. Default is
https://<org>.okta.com/oauth2/default. - Note the Issuer URI and Audience from Security → API → Authorization Servers → the chosen server → Settings.
- JWKS is served at
<issuer>/v1/keys— Alter discovers it automatically from the issuer URL.
- Click Add Identity Provider.
- Paste the issuer URI, click Discover. Alter recognizes Okta and pre-fills the claim mappings.
- Paste the audience.
- For group-based authorization: Okta requires a group claim filter on the authorization server. In Okta, edit the authorization server → Claims → add a claim:
- Name:
groups - Include in token type: Access Token
- Value type: Groups
- Filter:
Matches regex.*(or narrow as needed) Map that claim in the Alter portal before any user signs in.
- Name:
- Click Add Provider.
2. OIDC sign-in (optional)
Required only forvault.authenticate() or the Wallet sign-in flow.
In Okta:
- Applications → Applications → Create App Integration → OIDC → Web Application.
- Sign-in redirect URIs = both redirect URIs from the Alter portal.
- Sign-out redirect URIs = the Wallet logout URL from the Alter portal.
- Assignments: assign to the groups whose users should be able to sign into Alter Wallet.
- Copy Client ID and Client Secret from the application’s General tab.
- Open the User Authentication (OIDC) section.
- Paste credentials and Save.
3. Webhook deprovisioning (optional)
Okta supports event hooks for user lifecycle changes. In the Alter portal → Identity page → Webhooks section:- Click Enable Webhooks.
- Copy the generated signing secret (shown once) and the webhook endpoint URL.
- Workflow → Event Hooks → Create Event Hook.
- URL = the Alter webhook endpoint.
- Authentication field =
Authorization, Authentication secret = the signing secret. - Subscribe to:
user.lifecycle.delete.initiateduser.lifecycle.deactivateuser.lifecycle.suspend
- Verify the endpoint, then Activate.
Test
- Sign in as a test user through Okta → confirm the user appears in Alter.
- Deactivate or delete the test user → confirm their grants are revoked.
Common pitfalls
- Custom Authorization Server. With a custom authorization server (not
default), the issuer URI ishttps://<org>.okta.com/oauth2/<server-id>, not the org URL. - Missing group claim. Okta does not emit groups by default. Without the claim configured on the authorization server, group-based managed-secret access doesn’t work.
- Audience mismatch. Okta’s default audience is
api://default. JWTs with a different audience will fail verification.
See also
- IDP overview
- JWT identity — runtime pattern.