Connect an OpenID Connect provider
Use this guide when your identity provider speaks OpenID Connect rather than SAML. Any OIDC-certified issuer works — Pocket ID, Keycloak, Auth0, Zitadel, Google Workspace and friends all follow the same steps; only the spot where your provider shows the values differs.
Prerequisites
Section titled “Prerequisites”- an OIDC provider where you can create a client — note its client id
and its issuer URL (the base the
.well-known/openid-configurationdocument lives under), plus its client secret when the client is the confidential kind (public PKCE clients have none), - a Control Center server you administer.
- Open Settings → Server → Single sign-on and switch to the OpenID Connect tab.
- Fill in the issuer URL and the client id and the client secret when the provider issued one. Control Center discovers the endpoints from the issuer’s standard discovery document — no per-provider configuration.
- At the provider, register the redirect
https://<your-server>/oidc/callbackon that client. - If your groups live under a claim other than
groups, set the groups claim name; map groups to roles if you want (SSO can never grant the owner role). - Choose the membership policy (auto-add to every workspace, or require per-workspace invites), flip Enable this connection and Save.
- Press Test connection — the server fetches the issuer’s discovery document and confirms its endpoints, so a green toast means everything short of the browser round-trip works.
- Take a login: the web connect screen shows Sign in with OpenID
Connect, or open
https://<your-server>/oidc/logindirectly.
Claims (email, name, groups) are read from the issuer’s token endpoint over
TLS by your server — the browser never supplies them, so no local JWT
signature verification is involved. The client should be allowed to request
the openid profile email scope, which is exactly what Control Center asks
for.
Because that TLS channel is the only thing authenticating the claims, the
issuer URL must be https — a plaintext issuer would let any on-path
attacker forge identities wholesale. http is accepted for loopback
issuers (localhost, 127.0.0.1) only, for local development.