Configure OAuth 2.0 or OpenID Connect (OIDC) for single sign-on. Modern alternative to SAML for cloud-native identity providers.
SAML vs OAuth/OIDC
| Feature | SAML | OAuth/OIDC |
|---|---|---|
| Protocol | XML-based | JSON/REST |
| Token Format | XML assertion | JWT |
| Best For | Enterprise IdPs | Cloud apps |
| Mobile Support | Limited | Excellent |
| Setup Complexity | Higher | Lower |
| Auto-Discovery | No | Yes (OIDC) |
If your identity provider supports OpenID Connect, choose OIDC over OAuth 2.0 — it provides stronger security with automatic ID token verification and simpler configuration via auto-discovery.
Supported Providers
| Provider | Protocol |
|---|---|
| Microsoft Entra ID (Azure AD) | OIDC |
| Okta | OIDC |
| Auth0 | OIDC |
| Keycloak | OIDC |
| Custom | OAuth 2.0 / OIDC |
Zenovay OAuth/OIDC Configuration
Redirect URI
Your identity provider will need this redirect URI:
| Setting | Value |
|---|---|
| Redirect URI / Callback URL | https://auth.zenovay.com/api/sso/oauth/callback |
Required Scopes
Zenovay requires these scopes:
openid
email
profile
Choosing Between OAuth 2.0 and OpenID Connect
| Feature | OAuth 2.0 | OpenID Connect |
|---|---|---|
| Configuration | Enter all endpoint URLs manually | Auto-discovery via Issuer URL |
| ID Token verification | Not applicable | Automatic via JWKS |
| Fields needed | Client ID, Client Secret, Auth URL, Token URL, UserInfo URL | Client ID, Client Secret, Issuer URL |
| Best for | IdPs without OIDC support | Modern IdPs (Okta, Entra ID, Auth0, Keycloak) |
Microsoft Entra ID OIDC Setup
Step 1: Register Application
- Sign in to the Microsoft Entra admin center
- Go to Identity → Applications → App registrations
- Click New registration
- Configure:
| Entra ID Field | Value |
|---|---|
| Name | Zenovay |
| Supported account types | Accounts in this organizational directory only |
| Redirect URI | Web — https://auth.zenovay.com/api/sso/oauth/callback |
- Click Register
Step 2: Create Client Secret
- Go to Certificates & secrets
- Click New client secret
- Set description and expiration
- Copy the secret value immediately (it will not be shown again)
Step 3: Note Application Details
Record these values:
- Application (client) ID — from the Overview page
- Client Secret — from Step 2
- Tenant ID — from the Overview page
Step 4: API Permissions
- Go to API permissions
- Verify Microsoft Graph → User.Read (delegated) is listed
- If not, click Add a permission → Microsoft Graph → Delegated permissions → User.Read
Step 5: Configure in Zenovay
- Go to Settings → Authentication → SSO
- Click Add SSO Provider and select OpenID Connect
- Enter:
- Name: e.g., "Microsoft Entra ID"
- Client ID: the Application (client) ID from Step 3
- Client Secret: the secret value from Step 2
- Issuer URL:
https://login.microsoftonline.com/{your-tenant-id}/v2.0
- Click Save
- Add and verify your email domain
- Test the connection
Okta OIDC Setup
Step 1: Create Application
- Go to Okta Admin Console → Applications
- Click Create App Integration
- Select OIDC - OpenID Connect
- Select Web Application
- Click Next
Step 2: Configure Application
| Okta Field | Value |
|---|---|
| App integration name | Zenovay |
| Grant type | Authorization Code |
| Sign-in redirect URIs | https://auth.zenovay.com/api/sso/oauth/callback |
Step 3: Assign Users
- Go to the Assignments tab
- Assign users or groups
- Save
Step 4: Get Credentials
From the General tab, note:
- Client ID
- Client Secret
Step 5: Get Issuer URL
- Go to Security → API in the Okta Admin Console
- Find your authorization server (usually "default")
- The Issuer URI will look like:
https://your-org.okta.com/oauth2/default
Step 6: Configure in Zenovay
- Go to Settings → Authentication → SSO
- Click Add SSO Provider and select OpenID Connect
- Enter:
- Name: e.g., "Okta"
- Client ID: from Step 4
- Client Secret: from Step 4
- Issuer URL: from Step 5
- Click Save
- Add and verify your email domain
- Test the connection
Auth0 Setup
Step 1: Create Application
- Go to Auth0 Dashboard
- Go to Applications → Create Application
- Choose Regular Web Applications
- Click Create
Step 2: Configure Settings
In the Settings tab:
| Auth0 Field | Value |
|---|---|
| Allowed Callback URLs | https://auth.zenovay.com/api/sso/oauth/callback |
Click Save Changes.
Step 3: Get Credentials
From the Settings tab, note:
- Domain (e.g.,
your-tenant.us.auth0.com) - Client ID
- Client Secret
Step 4: Configure in Zenovay
- Go to Settings → Authentication → SSO
- Click Add SSO Provider and select OpenID Connect
- Enter:
- Name: e.g., "Auth0"
- Client ID: from Step 3
- Client Secret: from Step 3
- Issuer URL:
https://your-tenant.us.auth0.com/(include trailing slash)
- Click Save
- Add and verify your email domain
- Test the connection
The Auth0 Issuer URL must include the trailing slash. For example: https://dev-xxxxx.us.auth0.com/
Google Workspace
Google Workspace primarily supports SAML 2.0 for custom application integration. For Google Workspace SSO, we recommend using the SAML 2.0 setup guide instead.
If you specifically need OIDC with Google, you can create OAuth credentials in the Google Cloud Console:
- Go to Google Cloud Console → APIs & Services → Credentials
- Click Create Credentials → OAuth client ID
- Select Web application and enter
https://auth.zenovay.com/api/sso/oauth/callbackas the redirect URI - Note the Client ID and Client Secret
- In Zenovay, add an OpenID Connect provider with Issuer URL:
https://accounts.google.com
Custom OIDC Provider
If your identity provider supports OpenID Connect Discovery:
- Go to Settings → Authentication → SSO
- Click Add SSO Provider and select OpenID Connect
- Enter:
- Name: your provider name
- Client ID: from your IdP
- Client Secret: from your IdP
- Issuer URL: your IdP's issuer URL (e.g.,
https://your-idp.com)
- Click Save
Zenovay will automatically discover your IdP's authorization, token, userinfo, and JWKS endpoints via the .well-known/openid-configuration document.
Custom OAuth 2.0 Provider
If your identity provider does not support OIDC auto-discovery, use OAuth 2.0 with manual endpoint configuration:
- Go to Settings → Authentication → SSO
- Click Add SSO Provider and select OAuth 2.0
- Enter:
- Name: your provider name
- Client ID: from your IdP
- Client Secret: from your IdP
- Authorization URL: your IdP's authorization endpoint
- Token URL: your IdP's token endpoint
- User Info URL: your IdP's user info endpoint
- Click Save
Completing Setup
Verify Domain
After saving your SSO provider:
- Click Add Domain
- Enter your email domain (e.g.,
company.com) - Follow the DNS verification steps
- Once verified, users with that domain will be directed to SSO
Test Connection
- Open an incognito/private browser window
- Go to auth.zenovay.com
- Enter an email from your verified domain
- Authenticate with your IdP
- Verify successful return to the Zenovay dashboard
Enable SSO
- Toggle Enforce SSO to on
- Set enforcement:
- Optional: users can choose SSO or password login
- Required: all users must use SSO
- Save configuration
Before enforcing SSO, ensure at least one Owner account can still sign in via email/password as a backup in case of an IdP outage.
User Attribute Mapping
Standard Claims
| OIDC Claim | Zenovay Field |
|---|---|
| Email address | |
| given_name | First name |
| family_name | Last name |
| sub | Unique identifier |
Just-In-Time Provisioning
Auto-Create Users
New users are automatically created on first SSO login:
- Automatic account creation
- Default role assigned (Viewer)
- No invitation needed
Security Features
Zenovay automatically applies these security measures for OAuth/OIDC:
- PKCE (Proof Key for Code Exchange) — protects the authorization code exchange
- Signed state parameter — prevents CSRF attacks
- Nonce validation (OIDC) — prevents token replay attacks
- ID token verification (OIDC) — validates tokens using the IdP's JWKS endpoint
Troubleshooting
Common Errors
| Error | Cause | Solution |
|---|---|---|
| Invalid redirect_uri | URL mismatch | Ensure redirect URI is exactly https://auth.zenovay.com/api/sso/oauth/callback |
| Invalid client_id | Wrong credential | Verify client ID in your IdP dashboard |
| Invalid grant | Code expired | Try again — authorization codes are short-lived |
| Token verification failed | Signature failure | Verify JWKS endpoint is accessible |
| State parameter mismatch | Session issue | Clear cookies and try in an incognito window |
| OIDC discovery failed | Issuer URL issue | Test {issuer-url}/.well-known/openid-configuration in your browser |
Certificate Issues
If JWKS fails:
- Check JWKS URL is accessible
- Verify SSL certificate is valid
- Check for firewall blocks
Security Considerations
Secret Management
- Store client secret securely
- Rotate secrets before they expire
- Never expose secrets in client-side code
Scope Limitations
Request minimal scopes:
- Only
openid,email,profile - Don't request unnecessary access
Redirect URI Validation
- Use exact match validation in your IdP
- Don't use wildcards
- HTTPS required