Set up single sign-on (SSO)
You can configure your managed GitLab at server.camp so that users sign in via single sign-on (SSO) with their central account. GitLab uses the OpenID Connect standard for this (via OmniAuth) — so it works with Authentik, Keycloak, Zitadel, Microsoft Entra ID, Google Workspace, and other OIDC providers. This guide walks through the setup using Authentik as the example.
Setup is entirely self-service in the server.camp portal and available on all plans.
OpenID Connect instead of SAMLGitLab supports both SAML and OpenID Connect. This guide covers the connection via OpenID Connect, since it is available in the server.camp portal without any additional configuration.
- An active GitLab subscription at server.camp
- A reachable, OIDC-capable identity provider instance (e.g. Managed Authentik at server.camp)
- Admin access to both systems
- In Authentik, open Applications → Providers
- Click “Create” → Type: OAuth2/OpenID Connect
- Fill in the fields:
- Name:
GitLab - Client Type:
Confidential - Redirect URIs:
https://<your-gitlab-domain>/users/auth/openid_connect/callback - Signing Key: Select the default key (already available)
- Name:
- Save — Authentik automatically generates a Client ID and Client Secret.
Copy Client ID and Secret nowOpen the provider you just created and copy Client ID and Client Secret into a text editor. You’ll need both values later in the server.camp portal.
- Go to Applications → Applications → “Create”
- Fill in the fields:
- Name:
GitLab - Slug:
gitlab(you’ll need this value shortly for the issuer URL) - Provider: select the
GitLabprovider you just created
- Name:
- Optional: Under UI Settings, upload a GitLab logo and set the launch URL to
https://<your-gitlab-domain> - Save
Restrict access by group (recommended):
Open the application → Policy / Group / User Bindings tab → “Create” → Group → select the group that should have access to GitLab (e.g. all-employees). Only members of that group will be able to sign in to GitLab via SSO.
GitLab uses discovery: instead of entering every endpoint individually, you only need the issuer URL. GitLab reads all other endpoints from it automatically. In Authentik, the issuer URL has the following form (with a trailing slash):
https://<your-authentik>/application/o/<slug>/
Replace <your-authentik> with your actual Authentik address and <slug> with the slug from Step 2, e.g.:
https://your-authentik.srv.camp/application/o/gitlab/
Verify the issuer URLTo test it, append.well-known/openid-configurationto the issuer URL and open it in a browser. If a JSON response appears, the issuer URL is correct.
In the customer portal, open the configuration of your GitLab subscription and enter these values:
| Field | Value |
|---|---|
| Enable single sign-on | Checked |
| Login button label | Freely chosen, default SSO – shown as the label of the login button |
| Issuer URL | Issuer URL from Step 3 (with trailing slash) |
| Client ID | Copied from Authentik (Step 1) |
| Client secret | Copied from Authentik (Step 1) |
Save and wait for the deployment to finish (about 1–2 minutes). The GitLab login page then shows an additional button to sign in via your provider.
Two additional options control how user accounts are handled:
| Field | Default | Effect |
|---|---|---|
| Block new SSO users | On | New users created via SSO are blocked at first and must be approved by an admin before they can use GitLab. |
| Link existing users | Off | On the first SSO login, automatically links an existing GitLab account to the SSO account based on the email address. |
| SSO-only login | Off | Disables web password sign-in — users can only authenticate via SSO. |
Approve new users: With “Block new SSO users” enabled (the default), accounts newly created via SSO land in the blocked state. An admin approves them under Admin area → Overview → Users. This prevents arbitrary people from your identity provider from gaining access unintentionally.
Link existing users: With “Link existing users” enabled, an existing GitLab account with the same email address is automatically connected to the SSO account on the first SSO login. This way existing users don’t have to create a new account.
Security note on automatic linkingOnly enable “Link existing users” if your identity provider verifies email addresses. Otherwise, someone could sign in with an unverified, foreign email address and take over an existing GitLab account (account takeover). When in doubt, leave this option off and link accounts manually.
Enforce SSO-only login: The “SSO-only login” option hides the web password sign-in form — users can then authenticate exclusively via your identity provider. Git access over HTTPS (with a personal access token) and SSH is unaffected.
Lock-out risk – test SSO first, then enforce“SSO-only login” applies to all accounts, includingroot/admin. Only enable it once you can sign in successfully with an admin account via SSO (account linked via SSO and — if “Block new SSO users” is on — approved). Otherwise you lock yourself out completely; sign-in can then only be restored by redeploying with the option disabled. Recommendation: fully test SSO, link an admin account, and only then enable “SSO-only login”.
- Sign out of GitLab
- The login page now shows a button with the label you chose (default SSO)
- Click it — you’ll be redirected to Authentik
- After authentication (and 2FA if enabled), you land back in GitLab
Test before switching overThe classic GitLab login remains available next to the SSO button. This lets you sign in with your local admin account if the configuration needs adjusting.
- “redirect_uri mismatch” at the IdP: check that the redirect URI is stored in Authentik exactly — including
https://and path (/users/auth/openid_connect/callback). It must match your GitLab domain exactly. - No SSO button visible: is “Enable single sign-on” checked and has the deployment in the portal finished?
- Login works but the account is blocked: this is expected on the first login with “Block new SSO users” enabled. An admin approves the user under Admin area → Overview → Users.
- Issuer error / endpoints not found: check that the issuer URL ends with a trailing slash and that the discovery URL (
.well-known/openid-configuration) is reachable in a browser.
If you have any questions about SSO integration, reach our support via the customer portal.