Skip to content

SSO / OIDC Providers

Slink supports Single Sign-On through any OpenID Connect (OIDC) provider. Users sign in with an external identity provider instead of a Slink password, and accounts are matched or created automatically based on the verified email address.

Providers are configured entirely from the admin Settings page and stored encrypted in the database. There are no per-provider environment variables to manage.

Slink ships with presets for the most common providers, plus a Custom option for any other OIDC-compliant service.

SSO provider selection in Slink admin settings

ProviderIssuer / Discovery URL
GoogleBuilt in, no URL needed
Authentikhttps://authentik.example.com/application/o/slink/
Keycloakhttps://keycloak.example.com/realms/your-realm
Autheliahttps://auth.example.com
Pocket IDhttps://pocket-id.example.com
CustomAny OIDC issuer URL
  1. Open Settings → Single Sign-On (/admin/settings/sso).

  2. Copy the callback URL shown at the top of the page and add it to your identity provider’s list of allowed redirect URIs.

    SSO providers list showing the callback URL

  3. Click Create, then choose a provider preset (or Custom).

  4. Fill in the Issuer URL, Client ID, and Client Secret from your provider, then enable it.

    SSO provider configuration form

FieldRequiredDescription
Provider NameCustom onlyDisplay label for the login button.
SlugCustom onlyURL-safe identifier used in the login route. Lowercase letters, numbers, and hyphens.
Issuer URLYesThe provider’s base OIDC issuer. Slink appends /.well-known/openid-configuration automatically, so you do not need to include it. Not shown for Google, which uses a fixed issuer.
Client IDYesOAuth client identifier from your provider. Stored encrypted.
Client SecretYesOAuth client secret from your provider. Stored encrypted.
EnabledNoWhether the provider appears on the login page.

Slink uses a single fixed callback path for every provider:

https://your-slink-instance.com/profile/sso/callback

The host is taken from your ORIGIN environment variable. Register this exact URL with each identity provider, or sign-in will fail with a redirect URI mismatch.

Slink reads user details from the provider’s ID token. For a sign-in to succeed, the token must contain:

ClaimPurpose
subStable unique identifier for the external account.
emailUsed to match or create the Slink account.
email_verifiedMust be true. Slink rejects sign-in if the email is unverified.
name or preferred_usernameDisplay name. preferred_username is used as a fallback.

When someone signs in, Slink links the external account by sub, falls back to matching an existing user by email, and otherwise creates a new account. New accounts still respect your USER_ALLOW_REGISTRATION and USER_APPROVAL_REQUIRED settings, so a first-time SSO user may need admin approval before they can sign in.

If your provider uses a self-signed or otherwise untrusted certificate (common in local or homelab setups), Slink’s calls to the discovery, token, and JWKS endpoints will fail. Set OAUTH_VERIFY_SSL=false on the Slink container to disable certificate verification.

VariableDescriptionDefault
OAUTH_VERIFY_SSLVerify the provider’s SSL certificate during the OIDC flow.Set to false only for trusted internal providers with self-signed certificates.true

Authelia works with Slink, but unlike most providers it does not include the email and email_verified claims in the ID token by default. Because Slink matches users by verified email, sign-in fails until you add a claims policy that puts those claims in the ID token.

Add a claims policy and reference it from the Slink client:

identity_providers:
oidc:
claims_policies:
with_email:
id_token:
- 'email'
- 'email_verified'
clients:
- client_id: 'slink'
client_name: 'Slink'
client_secret: '{{ env "SLINK_OIDC_CLIENT_SECRET" }}'
public: false
claims_policy: 'with_email'
authorization_policy: 'one_factor'
redirect_uris:
- 'https://your-slink-instance.com/profile/sso/callback'
scopes:
- 'openid'
- 'profile'
- 'email'
grant_types:
- 'authorization_code'
response_types:
- 'code'

In the Slink admin form, set the Issuer URL to your Authelia base URL (for example https://auth.example.com) and use the matching Client ID and Client Secret.