This applies to deployments that use native OIDC or Auth0 sign-in (
authProvider: oidc or auth0). It covers sign-in to the Genesis web app. The genesis login command line and MCP clients keep using your primary IdP.What your users see
With no additional IdP configured, Genesis sends people straight to your organization’s sign-in page, as it does today. With one or more configured, people first see a Sign in to Genesis screen:- Sign in with your organization’s account: your primary IdP.
- One button per additional IdP, with a label you choose, for example Genesis staff.
Before you start
You need:- An IdP you control that speaks OpenID Connect (OIDC). Auth0, Okta, Keycloak, Amazon Cognito, Ping and most other OIDC providers work. A free developer tenant is usually enough for a handful of people.
- The address people use to reach Genesis, for example
https://genesis.example.com. Below it is called your Genesis address. - Access to the Genesis configuration file of your deployment (with Helm, the file you pass as
genesisConfig.content), and permission to upgrade the deployment.
Step 1: Set up the identity provider
1
Create an application for Genesis
In your IdP, create an application of type Single Page Application (in Okta: OIDC - Single-Page Application). It must use the authorization code flow with PKCE and no client secret.Set:
Use the address exactly as people type it: scheme and host, no path, no trailing slash.Create one application per Genesis instance. Genesis accepts only tokens issued to the application you name in Step 2, so a separate application per instance keeps access to each instance separate.
2
Decide who can sign in
Anyone who can sign in to this application gets a Genesis user on your instance. So:
- Turn self sign-up off.
- Turn off any login method you do not intend to offer, such as social logins that let anyone in.
- Invite or create only the people who should have access, and assign them to the application.
- Require multi-factor authentication if your policy calls for it.
3
Collect three values
You need these for Step 2:
Copy the issuer exactly, including any trailing slash. Genesis compares it with the issuer inside every token.
Example: Auth0
Example: Auth0
- Applications → Applications → Create Application, choose Single Page Web Applications.
- On Settings, put your Genesis address in Allowed Callback URLs, Allowed Logout URLs and Allowed Web Origins, then save. Note the Client ID.
- Settings → Advanced Settings → Grant Types: keep Authorization Code and Refresh Token checked.
- Authentication → Database: open the connection you use, turn on Disable Sign Ups, and on its Applications tab enable only the applications that should use it. Turn off social connections you do not want for this application on the application’s Connections tab.
- User Management → Users: create or invite the people who should have access.
- Issuer:
https://<your-tenant>.<region>.auth0.com/(with the trailing slash). JWKS URL:https://<your-tenant>.<region>.auth0.com/.well-known/jwks.json.
Example: Okta
Example: Okta
- Applications → Create App Integration, choose OIDC - OpenID Connect, then Single-Page Application.
- Grant type: Authorization Code and Refresh Token. Sign-in redirect URIs and Sign-out redirect URIs: your Genesis address.
- Assignments: assign only the people or group that should have access. Note the Client ID.
- Security → API → Trusted Origins: add your Genesis address with CORS checked.
- Issuer:
https://<your-org>.okta.com(the org authorization server, no trailing slash). JWKS URL:https://<your-org>.okta.com/oauth2/v1/keys.
Step 2: Add the IdP to Genesis
Add anauth.additional_issuers entry to your Genesis configuration file. With Helm, this is the file you pass as genesisConfig.content:
auth: section, add additional_issuers inside it instead of creating a second auth: key.
Then apply it the way you normally upgrade, for example:
additional_issuers. Each becomes its own button.
Field reference
Step 3: Allow the network paths
- The Genesis server needs outbound HTTPS to the IdP’s
jwks_urlto check signatures. - People’s browsers must be able to reach the IdP’s sign-in pages. If you use a managed or enterprise browser, or a web proxy with an allowlist, add the IdP’s domain.
Step 4: Check it works
- Open your Genesis address in a private browser window. You should see Sign in to Genesis with both buttons.
- Choose the additional IdP’s button, sign in, and confirm Genesis opens.
- Sign out. The choice screen should appear again.
- Sign in with Sign in with your organization’s account to confirm your own users are unaffected.
Good to know
- Roles from groups. Group-to-role mapping reads the
groupsandrolesclaims of each token. An additional IdP usually sends neither, so its users start with the default role. - SCIM-only admission. If your instance only admits users provisioned through SCIM, people signing in through an additional IdP are refused unless they are provisioned too.
- Same email, different users. Users are matched by the IdP’s subject identifier, not by email. A person who signs in through both IdPs ends up with two Genesis users.
- Removing an IdP. Delete its entry and upgrade. Its button disappears and its tokens stop being accepted. Users it created stay in Genesis until an administrator removes them.

