Skip to main content
Adaptive Engine authenticates users through OpenID Connect (OIDC). You configure one or more identity providers, and users log in through your organization’s existing identity system.

How it works

When a user clicks “Log in” on the Adaptive Engine UI:
  1. The browser redirects to your identity provider (Google, Azure Entra ID, Okta, etc.)
  2. The user authenticates with their organization credentials
  3. The provider redirects back to Adaptive Engine with an authorization code
  4. Adaptive Engine exchanges the code for an ID token, extracts the user’s email and name, and creates a session
The entire flow uses the Authorization Code grant with PKCE for security.

Configuration

Configure OIDC providers in your Helm values.yaml under secrets.auth.oidc.providers. Each provider is an entry in the list:
You can configure multiple providers. Each one appears as a separate login option on the sign-in page.

Provider fields

Redirect URI

Set your identity provider’s redirect URI to:
Replace {key} with the provider key from your configuration (e.g., google, okta).
The root_url in your control plane configuration must match the public URL users access. OIDC redirects fail if this is misconfigured.

User provisioning

When a user logs in through OIDC for the first time, Adaptive Engine either finds an existing account or creates a new one (if allow_sign_up: true). New users are assigned to the team and role defined in your auth configuration:
If allow_sign_up: true, anyone who can authenticate with your OIDC provider can access Adaptive Engine. Use allowed_domains or set allow_sign_up: false and pre-create users via the SDK to restrict access.

Security features

PKCE

Proof Key for Code Exchange prevents authorization code interception attacks. Enabled by default and recommended for all providers. Only disable it if your provider explicitly does not support PKCE.

Email domain restriction

Limit which email domains can log in per provider:
Users with emails outside these domains are rejected at login. Domain matching is case-insensitive.

Email verification

By default, Adaptive Engine requires the OIDC provider to confirm the user’s email is verified (email_verified claim). This prevents account hijacking through unverified email addresses. Set require_email_verified: false only for development environments or providers that do not include the email_verified claim.

Provider examples

Google Workspace

  1. Go to the Google Cloud Console
  2. Create an OAuth 2.0 client ID (application type: Web application)
  3. Add https://YOUR_DEPLOYMENT_URL/api/v1/auth/login/google/callback as an authorized redirect URI
  4. Copy the client ID and secret

Microsoft Entra ID (Azure AD)

  1. In the Azure Portal, go to Entra ID > App registrations > New registration
  2. Set the redirect URI to https://YOUR_DEPLOYMENT_URL/api/v1/auth/login/azure/callback (type: Web)
  3. Under Certificates & secrets, create a new client secret
  4. Note the Application (client) ID and Directory (tenant) ID
Replace YOUR_TENANT_ID with your Azure directory tenant ID. Use common instead of a tenant ID to allow any Microsoft account.

Okta

  1. In the Okta Admin Console, go to Applications > Create App Integration
  2. Select OIDC - OpenID Connect and Web Application
  3. Set the sign-in redirect URI to https://YOUR_DEPLOYMENT_URL/api/v1/auth/login/okta/callback
  4. Copy the client ID and secret from the application settings
If you use a custom authorization server, the issuer URL is https://your-org.okta.com/oauth2/YOUR_AUTH_SERVER_ID.

Keycloak

  1. In the Keycloak Admin Console, create a new client in your realm
  2. Set Client authentication to On (confidential client)
  3. Add https://YOUR_DEPLOYMENT_URL/api/v1/auth/login/keycloak/callback as a valid redirect URI
  4. Copy the client ID and secret from the Credentials tab

Amazon Cognito

  1. In the AWS Console, create or select a User Pool
  2. Under App integration, create an app client with a client secret
  3. Add https://YOUR_DEPLOYMENT_URL/api/v1/auth/login/cognito/callback as a callback URL
  4. Note the User Pool ID and region
Replace REGION with your AWS region (e.g., us-east-1) and POOL_ID with your User Pool ID (e.g., us-east-1_aBcDeFgHi).

Multiple providers

You can configure several providers at once. Each appears as a login option:
This setup lets corporate users sign up automatically through Azure AD, while partner users must be pre-created via the SDK and can then log in through Okta.