Overview
Configure single sign-on (SSO) authentication with OIDC, OAuth2, or SAML 2.0 providers. This guide covers the essential steps to get authentication working quickly.Choose your provider type
OIDC
RecommendedGoogle, Okta, Auth0, Azure AD, Keycloak
OAuth2
Legacy providersGitHub, GitLab, custom OAuth2
SAML 2.0
EnterpriseOkta, OneLogin, Azure AD
Quick setup
Step 1: Enable database-backed providers
Set the environment variable:Step 2: Create OAuth credentials in your IdP
- Google
- Okta
- Azure AD
- Go to Google Cloud Console
- Navigate to APIs & Services → Credentials
- Click Create Credentials → OAuth client ID
- Select Web application
- Add redirect URI:
- Copy the Client ID and Client Secret
Step 3: Configure in admin UI
- Navigate to
/admin/sso_providersin your application - Click Add Provider
- Fill in the details:
- Click Save
Step 4: Test the integration
- Log out of your application
- You should see a “Sign in with Google” button (or your provider name)
- Click it and complete the authentication flow
- You should be logged in successfully
Configuration options
Local login control
Disable local email/password login to enforce SSO-only:JIT user provisioning
Control how new users are created:Role mapping
Configure default roles for new users in the admin UI under Role Mapping:- Default Role:
member(assigned to all new users) - Group Mappings: Map IdP groups to application roles
Common configurations
Pure SSO-only mode
Hybrid mode (local + SSO)
Enterprise mode (restricted domains)
@company.com emails can authenticate, and they must be pre-created by an admin.
Bootstrap first admin
The first super admin must be set via Rails console:/admin/users.
Troubleshooting
Provider not appearing on login page
- Verify
AUTH_PROVIDERS_SOURCE=databaseis set - Check that the provider is enabled in
/admin/sso_providers - Restart the application after setting environment variables
Authentication fails
- Verify the redirect URI matches exactly in both systems
- Check that client ID and secret are correct
- Ensure the issuer URL is accessible from your server
- Review logs at
/admin/sso_audit_logs
User not created automatically
- Check
AUTH_JIT_MODEis set tocreate_and_link - Verify the email domain is allowed (if
ALLOWED_OIDC_DOMAINSis set) - Ensure the IdP returns a verified email address
- Check audit logs for JIT provisioning errors