Configure OpenID Connect authentication for your Devana.ai whitemark instance. OIDC is an identity layer built on top of OAuth 2.0 that provides standardized user authentication and profile information.
| Variable | Description | Required | Example |
|---|---|---|---|
OIDC_ISSUER | OIDC issuer identifier | Yes | https://auth.yourcompany.com |
OIDC_AUTHORIZATION_URL | Authorization endpoint URL | Yes | https://auth.yourcompany.com/auth |
OIDC_TOKEN_URL | Token endpoint URL | Yes | https://auth.yourcompany.com/token |
OIDC_USERINFO_URL | UserInfo endpoint URL | Yes | https://auth.yourcompany.com/userinfo |
OIDC_CLIENT_ID | OIDC Client ID | Yes | devana-client-id |
OIDC_CLIENT_SECRET | OIDC Client Secret | Yes | your-client-secret |
OIDC_CALLBACK_URL | Callback URL for authentication | Yes | https://your-domain.com/auth/oidc/callback |
The setup process varies by OIDC provider:
Create OIDC Client:
https://your-domain.com/auth/oidc/callbackNote Endpoint URLs:
/.well-known/openid-configurationKeycloak:
Issuer: https://keycloak.yourcompany.com/auth/realms/master
Authorization URL: https://keycloak.yourcompany.com/auth/realms/master/protocol/openid-connect/auth
Token URL: https://keycloak.yourcompany.com/auth/realms/master/protocol/openid-connect/token
UserInfo URL: https://keycloak.yourcompany.com/auth/realms/master/protocol/openid-connect/userinfo
Okta:
Issuer: https://dev-123456.okta.com
Authorization URL: https://dev-123456.okta.com/oauth2/default/v1/authorize
Token URL: https://dev-123456.okta.com/oauth2/default/v1/token
UserInfo URL: https://dev-123456.okta.com/oauth2/default/v1/userinfo
Add the following variables to your environment configuration:
# OpenID Connect Configuration
OIDC_ISSUER=https://auth.yourcompany.com
OIDC_AUTHORIZATION_URL=https://auth.yourcompany.com/auth
OIDC_TOKEN_URL=https://auth.yourcompany.com/token
OIDC_USERINFO_URL=https://auth.yourcompany.com/userinfo
OIDC_CLIENT_ID=devana-client-id
OIDC_CLIENT_SECRET=your-client-secret
OIDC_CALLBACK_URL=https://your-domain.com/auth/oidc/callback
Configure your whitemark to include OIDC as an allowed provider:
{
"allowedProviders": ["OPENID_CONNECT"],
"registrationType": ["SSO"]
}
OIDC provides standardized claims for user information:
| OIDC Claim | Devana.ai Field | Notes |
|---|---|---|
email | email | Primary identifier |
given_name | firstName | First name |
family_name | lastName | Last name |
name | displayName | Full name |
sub | providerId | Unique subject identifier |
preferred_username | - | Username (available but not mapped) |
picture | - | Profile picture URL (available but not mapped) |
OIDC defines standard claims that may be available:
name: Full namefamily_name: Last namegiven_name: First namemiddle_name: Middle namenickname: Casual namepreferred_username: Usernameprofile: Profile page URLpicture: Profile picture URLwebsite: Website URLgender: Genderbirthdate: Birthdayzoneinfo: Time zonelocale: Localeupdated_at: Last profile updateemail: Email addressemail_verified: Email verification statusaddress: Physical mailing addressphone_number: Phone numberphone_number_verified: Phone verification statusMost OIDC providers expose a discovery document. You can use it to automatically configure endpoints:
# Fetch discovery document
curl https://auth.yourcompany.com/.well-known/openid-configuration
OIDC providers may expose custom claims. To access them:
Request Custom Scopes:
Process Custom Claims:
For enhanced security, implement additional token validation:
Signature Verification:
Audience Validation:
OIDC_ISSUER=https://keycloak.yourcompany.com/auth/realms/master
OIDC_AUTHORIZATION_URL=https://keycloak.yourcompany.com/auth/realms/master/protocol/openid-connect/auth
OIDC_TOKEN_URL=https://keycloak.yourcompany.com/auth/realms/master/protocol/openid-connect/token
OIDC_USERINFO_URL=https://keycloak.yourcompany.com/auth/realms/master/protocol/openid-connect/userinfo
OIDC_CLIENT_ID=devana
OIDC_CLIENT_SECRET=your-keycloak-secret
OIDC_CALLBACK_URL=https://your-domain.com/auth/oidc/callback
OIDC_ISSUER=https://dev-123456.okta.com
OIDC_AUTHORIZATION_URL=https://dev-123456.okta.com/oauth2/default/v1/authorize
OIDC_TOKEN_URL=https://dev-123456.okta.com/oauth2/default/v1/token
OIDC_USERINFO_URL=https://dev-123456.okta.com/oauth2/default/v1/userinfo
OIDC_CLIENT_ID=your-okta-client-id
OIDC_CLIENT_SECRET=your-okta-secret
OIDC_CALLBACK_URL=https://your-domain.com/auth/oidc/callback
OIDC_ISSUER=https://yourcompany.auth0.com/
OIDC_AUTHORIZATION_URL=https://yourcompany.auth0.com/authorize
OIDC_TOKEN_URL=https://yourcompany.auth0.com/oauth/token
OIDC_USERINFO_URL=https://yourcompany.auth0.com/userinfo
OIDC_CLIENT_ID=your-auth0-client-id
OIDC_CLIENT_SECRET=your-auth0-secret
OIDC_CALLBACK_URL=https://your-domain.com/auth/oidc/callback
Invalid issuer:
OIDC_ISSUER matches the issuer claim in tokensEndpoint not found:
Invalid client:
OIDC_CLIENT_ID and OIDC_CLIENT_SECRET are correctToken validation failed:
UserInfo endpoint error:
OIDC_USERINFO_URL is correct and accessibleTest your provider's discovery document:
curl -s https://auth.yourcompany.com/.well-known/openid-configuration | jq '.'
This should return JSON with endpoint URLs and supported features.
Test individual endpoints:
# Test authorization endpoint (should return HTML login page)
curl -I https://auth.yourcompany.com/auth
# Test token endpoint (should return method not allowed or invalid request)
curl -I https://auth.yourcompany.com/token
# Test UserInfo endpoint (should return unauthorized without token)
curl -I https://auth.yourcompany.com/userinfo
When migrating to OIDC from other authentication methods:
User Mapping:
Claims Migration:
Testing: