Supported Identity Providers
ZITADEL provides built-in templates for popular identity providers:Social Providers
Google: OAuth 2.0 / OpenID Connect GitHub: OAuth 2.0 GitLab: OAuth 2.0 Apple: OAuth 2.0 / OpenID Connect with Sign in with AppleEnterprise Providers
Azure AD / Microsoft Entra ID: OpenID Connect Generic OIDC: Any OpenID Connect-compliant provider Generic OAuth 2.0: Any OAuth 2.0 provider SAML 2.0: Enterprise SAML identity providers JWT: Token-based authentication with JWT providers LDAP: Lightweight Directory Access Protocol providersHow Identity Federation Works
Identity federation follows the OAuth 2.0 / OpenID Connect protocols:User Initiates Login
User clicks on a social login button (e.g., “Sign in with Google”) in the ZITADEL Login UI
Redirect to Provider
ZITADEL redirects the user to the external identity provider’s authentication page
Configuring Identity Providers
Prerequisites
Before adding an identity provider to ZITADEL:- Enable external IdP support in your Login Policy
- Register your application with the external provider
- Obtain client credentials (Client ID and Client Secret)
- Configure redirect URIs at the provider
Enable External IdP in Login Policy
Or via API:
Adding Identity Providers
Create Google OAuth App
- Go to Google Cloud Console
- Create a new project or select existing
- Navigate to APIs & Services > Credentials
- Create OAuth 2.0 Client ID (Web application)
- Add authorized redirect URI:
https://your-domain.zitadel.cloud/ui/login/login/externalidp/callback - Note the Client ID and Client Secret
Add Provider in ZITADEL
- Navigate to Instance/Organization Settings > Identity Providers
- Click Add Provider
- Select Google template
- Enter Client ID and Client Secret
- Configure scopes (default:
openid profile email) - Save the configuration
GitHub
Create GitHub OAuth App
- Go to GitHub Settings > Developer settings > OAuth Apps
- Click New OAuth App
- Set Authorization callback URL:
https://your-domain.zitadel.cloud/ui/login/login/externalidp/callback - Note the Client ID and Client Secret
GitHub Provider Implementation
Azure AD / Microsoft Entra ID
Register App in Azure
- Go to Azure Portal
- Navigate to Azure Active Directory > App registrations
- Click New registration
- Set Redirect URI:
https://your-domain.zitadel.cloud/ui/login/login/externalidp/callback - Create a client secret in Certificates & secrets
- Note Application (client) ID and Directory (tenant) ID
Generic OIDC Provider
For any OpenID Connect-compliant provider:Identity Provider Options
When configuring identity providers, you can control user account behavior:Linking Options
IsLinkingAllowed: Allow users to manually link external identity to existing ZITADEL account IsCreationAllowed: Allow users to create new ZITADEL account using external identity IsAutoCreation: Automatically create ZITADEL account on first login (no manual confirmation) IsAutoUpdate: Automatically update user profile from external provider on each loginRecommended Settings
B2C Applications (consumer apps):isLinkingAllowed: trueisCreationAllowed: trueisAutoCreation: trueisAutoUpdate: true
isLinkingAllowed: trueisCreationAllowed: false (pre-provision users)isAutoCreation: falseisAutoUpdate: true
Attribute Mapping
ZITADEL maps attributes from external providers to local user profiles:Standard Mappings
Google:- ID → External User ID
- Email → Email (verified)
- Given Name → First Name
- Family Name → Last Name
- Picture → Avatar URL
- ID → External User ID
- Login → Preferred Username
- Email → Email (verified)
- Name → Display Name
- Avatar URL → Avatar URL
- OID → External User ID
- Email → Email
- Given Name → First Name
- Surname → Last Name
- Picture → Avatar URL
Custom Attribute Mapping
For generic OIDC/OAuth providers, you can configure custom attribute mappings to extract specific claims from the provider’s ID token or user info endpoint.Identity Brokering
ZITADEL acts as an identity broker, allowing you to:- Aggregate multiple identity providers
- Provide consistent authentication experience
- Centralize user management
- Apply organization-specific policies
- Maintain audit trail across providers
Domain Discovery
Automate organization and IdP selection based on user’s email domain:
Domain discovery automates organization and IdP selection based on the user’s email domain.
MFA with External IdPs
Control MFA requirements for federated users:Force MFA for Local Only
Require MFA only for local accounts, not federated users:forceMfaLocalOnly: true, users authenticating via external IdPs bypass ZITADEL’s MFA requirement (assuming the external provider handles MFA).
Testing Identity Providers
Redirect URI
Ensure your redirect URI matches exactly:Test Flow
- Open incognito/private browser window
- Navigate to your application’s login page
- Click the social login button
- Verify redirect to external provider
- Authenticate with test credentials
- Verify successful redirect back to ZITADEL
- Check user creation/linking in ZITADEL Console
Common Issues
Redirect URI mismatch: Verify exact match including protocol (https) and trailing slash Invalid client credentials: Double-check Client ID and Client Secret Scope errors: Ensure requested scopes are enabled at the provider CORS issues: For custom providers, verify CORS configurationSecurity Considerations
Email Verification: External provider email claims are trusted as verified. Ensure you trust the provider’s verification process.
Account Takeover Prevention: Carefully configure linking options to prevent unauthorized account linking.
Best Practices
- Use HTTPS: Always use HTTPS for redirect URIs in production
- Verify State Parameter: ZITADEL automatically includes state parameter for CSRF protection
- Limit Scopes: Request only necessary scopes from external providers
- Monitor Account Linking: Track which accounts link external identities
- Update Regularly: Keep provider configurations up to date
API Reference
Key IdP-related API endpoints:Add OIDC IdP
Add OAuth IdP
Add SAML IdP
List IdPs
Add IdP to Login Policy
Multi-Tenancy Considerations
In multi-tenant deployments:- Configure IdPs at Instance level for global availability
- Configure IdPs at Organization level for tenant-specific providers
- Organization-level IdPs override instance-level settings
- Each organization can have different available IdPs