Identity Providers
Shoehorn uses OIDC (OpenID Connect) for authentication. It supports multiple identity providers out of the box.
Supported Providers
Section titled “Supported Providers”| Provider | Config Value | Notes |
|---|---|---|
| Zitadel | zitadel | Recommended for open-source deployments |
| Okta | okta | Enterprise SSO |
| Microsoft Entra ID | entra-id | Microsoft 365 environments |
| Keycloak | keycloak | Self-hosted open-source |
Zitadel Setup
Section titled “Zitadel Setup”Zitadel is the recommended identity provider and can be deployed alongside Shoehorn.
1. Create a Project
Section titled “1. Create a Project”In the Zitadel console:
- Create a new project (e.g., “Shoehorn”)
- Note the Project ID
2. Create an Application
Section titled “2. Create an Application”- In the project, create a new Web application
- Set the redirect URI:
https://shoehorn.example.com/auth/callback - Set the post-logout redirect:
https://shoehorn.example.com - Note the Client ID
3. Create a Service User
Section titled “3. Create a Service User”For server-to-server communication:
- Create a Service User in the organization
- Generate a Personal Access Token (PAT)
- Grant the service user access to the project
4. Configure Shoehorn
Section titled “4. Configure Shoehorn”AUTH_PROVIDER=zitadelZITADEL_URL=http://zitadel:8080 # Internal URLZITADEL_EXTERNAL_URL=https://auth.example.com # Browser-accessible URLZITADEL_PROJECT_ID=349308689758290610ZITADEL_CLIENT_ID=349310449335993010ZITADEL_SERVICE_USER_PAT=your-pat-hereOkta Setup
Section titled “Okta Setup”1. Create an Application
Section titled “1. Create an Application”- In the Okta admin console, go to Applications > Create App Integration
- Select OIDC - OpenID Connect and Web Application
- Set sign-in redirect URI:
https://shoehorn.example.com/auth/callback - Set sign-out redirect URI:
https://shoehorn.example.com - Assign users/groups
2. Configure Shoehorn
Section titled “2. Configure Shoehorn”AUTH_PROVIDER=oktaOKTA_DOMAIN=your-org.okta.comOKTA_CLIENT_ID=0oa1234567890abcdefOKTA_CLIENT_SECRET=your-client-secretMicrosoft Entra ID Setup
Section titled “Microsoft Entra ID Setup”1. Register an Application
Section titled “1. Register an Application”- In the Azure portal, go to Azure Active Directory > App registrations
- Click New registration
- Set redirect URI:
https://shoehorn.example.com/auth/callback(Web) - Note the Application (client) ID and Directory (tenant) ID
- Create a Client secret under Certificates & secrets
2. Configure API Permissions
Section titled “2. Configure API Permissions”Add these permissions:
openid(delegated)profile(delegated)email(delegated)User.Read(delegated)
3. Configure Shoehorn
Section titled “3. Configure Shoehorn”AUTH_PROVIDER=entra-idENTRA_TENANT_ID=your-tenant-idENTRA_CLIENT_ID=your-client-idENTRA_CLIENT_SECRET=your-client-secretGroup Claims
Section titled “Group Claims”To enable group-based team mapping, configure your IdP to include group claims in the JWT token:
Zitadel
Section titled “Zitadel”Groups are included by default in the groups claim.
- Go to Security > API > Authorization Servers
- Add a
groupsclaim with filter “Matches regex.*”
Entra ID
Section titled “Entra ID”- In the app registration, go to Token configuration
- Add a groups claim
- Select Security groups
Session Management
Section titled “Session Management”- Sessions are stored in encrypted cookies (
shoehorn_session) - Cookie properties:
HttpOnly,SameSite=Lax,Secure(HTTPS) - Token refresh is automatic (transparent to the user)
- Set
AUTH_ENCRYPTION_KEYfor cookie encryption in production
Multi-Provider Support
Section titled “Multi-Provider Support”Shoehorn can verify tokens from any OIDC-compliant provider. The JWT verifier auto-detects the issuer from the token and validates against the configured provider.