1. Run Keycloak (skip if you already have one)
Quickest path with Docker or Podman:
podman run -d --name keycloak -p 8081:8080 \
-e KC_BOOTSTRAP_ADMIN_USERNAME=admin \
-e KC_BOOTSTRAP_ADMIN_PASSWORD=admin \
quay.io/keycloak/keycloak:26.0 start-dev
Wait ~15 seconds, then sign in to http://localhost:8081 with admin / admin. Don't run this in production with default credentials.
2. Create a realm
- Click the realm dropdown (top left) → Create realm.
- Realm name:
your-company (or any name — this becomes part of your issuer URL). - Click Create.
3. Create an OIDC client
- Sidebar → Clients → Create client.
- Client type: OpenID Connect. Client ID:
repowarden. Click Next. - Capability config:
- Client authentication: ON
- Authorization: OFF
- Auth flow: ✅ Standard flow (auth code)
Click Next. - Login settings:
- Valid redirect URIs: get this from Team settings → SSO after creating the connection in RepoWarden. Format:
https://api.repowarden.dev/api/auth/sso/callback/<providerId> - Web origins:
+ (allows redirect URIs' origins)
- Click Save.
- Switch to the Credentials tab and copy the Client Secret.
4. Create a test user
- Sidebar → Users → Create new user.
- Username + email (e.g.
[email protected]). Email verified: ON. Enabled: ON. - Save.
- On the user's Credentials tab → Set password. Set "Temporary" to OFF.
5. Note your issuer URL
Keycloak's issuer follows the pattern:
https://<keycloak-host>/realms/<realm-name>
Verify the discovery document loads:
curl <issuer>/.well-known/openid-configuration
6. Register the connection in RepoWarden
- Go to Team settings → SSO.
- Click Add SSO connection. Identity provider: Keycloak.
- Display name: e.g. "Acme Keycloak". Issuer URL: from step 5. Email domain: e.g.
your-company.com. - Client ID:
repowarden. Client secret: from step 3. - Click Test discovery → should show ✓.
- Click Save connection.
7. Update the Keycloak redirect URI
Copy the Provider ID shown on the connection card in RepoWarden, then go back to Keycloak's client settings and replace the placeholder redirect URI with the exact URL.
Production checklist
- Run Keycloak behind HTTPS (use a reverse proxy or a managed deployment).
- Set strong admin credentials and disable the bootstrap admin once a real admin user exists.
- Configure database persistence — by default
start-dev uses an ephemeral H2 DB. - Use Keycloak's user federation (LDAP/AD) or external IdP brokering instead of creating users manually.