SSO with OAuth or OIDC

Warning: This is the documentation of a beta version of LinkAce. Things may break. Only use this version for tests.

You can connect LinkAce with an OAuth or OIDC provider to manage your users at a central place and let them login to LinkAce with a single click. No separate registration needed. No duplicate passwords to save.

LinkAce supports various OAuth or OIDC providers.

Supported providers

  • Generic OIDC provider
  • Auth0
  • Authentik
  • AWS Cognito
  • FusionAuth
  • Google
  • GitHub
  • GitLab
  • Keycloak
  • Microsoft Azure
  • Okta
  • Zitadel

General Configuration

To enable and configure Single Sign On, add the following configuration to your .env file. Please note that every SSO provider has its own configuration which must be added to the .env file and properly set up if you want to use it.

Config Possible Options Description
SSO_ENABLED true/false Enable SSO authentication via OAuth or OIDC
REGULAR_LOGIN_DISABLED true/false Disable the regular login form and user management.

User handling

While a user tries to login with any SSO provider, this is how the user account is handled:

  • If a user with the same email address already exists, but no SSO details are present yet, this user is automatically connected to the user provided by the SSO provider. An internal ID is stored for that user.
  • If a user with the same email address already exists and SSO details are present, the user is logged in and those fields are updated:
    • user name
    • authentication token (if applicable)
  • If no user with the same email address exists, a new user is registered and the user is automatically logged in.
If you disable your SSO provider after users registered with it, those users must manually reset their password via the regular password reset feature.

Example Configuration

SSO_ENABLED=true
REGULAR_LOGIN_DISABLED=true

SSO_AUTH0_ENABLED=true
SSO_AUTH0_BASE_URL=https://example.auth0.com/
SSO_AUTH0_CLIENT_ID=W+qVVdlLP32a2F.....
SSO_AUTH0_CLIENT_SECRET=U5qo0Le2stKK2vO87TTl.....

After adding this to your .env file, the regular login form vanishes and a button to login with Auth0 will show up when users try to login.


Provider Configuration

Generic OpenID Connect Provider

Config Default Description
SSO_OIDC_ENABLED false Enable SSO authentication for OIDC
SSO_OIDC_BASE_URL The OIDC base URL (details see below)
SSO_OIDC_CLIENT_ID The OIDC client ID
SSO_OIDC_CLIENT_SECRET The OIDC client secret
SSO_OIDC_SCOPES Additional scopes sent to the OIDC provider

The base URL must be set to the URL of your OIDC endpoint excluding the .well-known/openid-configuration part. Example: If https://auth.company.com/application/linkace/.well-known/openid-configuration is your OIDC configuration URL, then https://auth.company.com/application/linkace must be your base URL.

Auth0

Config Default Description
SSO_AUTH0_ENABLED false Enable SSO authentication for Zitadel
SSO_AUTH0_BASE_URL The Auth0 base URL
SSO_AUTH0_CLIENT_ID The Auth0 client ID
SSO_AUTH0_CLIENT_SECRET The Auth0 client secret

Authentik

Config Default Description
SSO_AUTHENTIK_ENABLED false Enable SSO authentication for Authentik
SSO_AUTHENTIK_BASE_URL The Authentik base URL
SSO_AUTHENTIK_CLIENT_ID The Authentik client ID
SSO_AUTHENTIK_CLIENT_SECRET The Authentik client secret

AWS Cognito

Config Default Description
SSO_COGNITO_ENABLED false Enable SSO authentication for Cognito
SSO_COGNITO_HOST The Cognito base URL
SSO_COGNITO_CLIENT_ID The Cognito client ID
SSO_COGNITO_CLIENT_SECRET The Cognito client secret
SSO_COGNITO_LOGIN_SCOPE Comma-separated list of login scopes
SSO_COGNITO_SIGN_OUT_URL Where to redirect to in LinkAce after logging out

FusionAuth

Config Default Description
SSO_FUSIONAUTH_ENABLED false Enable SSO authentication for FusionAuth
SSO_FUSIONAUTH_BASE_URL The FusionAuth base URL
SSO_FUSIONAUTH_CLIENT_ID The FusionAuth client ID
SSO_FUSIONAUTH_CLIENT_SECRET The FusionAuth client secret

Google

Config Default Description
SSO_GOOGLE_ENABLED false Enable SSO authentication for Google
SSO_GOOGLE_CLIENT_ID The Google client ID
SSO_GOOGLE_CLIENT_SECRET The Google client secret

GitHub

Config Default Description
SSO_GITHUB_ENABLED false Enable SSO authentication for GitHub
SSO_GITHUB_CLIENT_ID The GitHub client ID
SSO_GITHUB_CLIENT_SECRET The GitHub client secret

GitLab

Config Default Description
SSO_GITLAB_ENABLED false Enable SSO authentication for GitLab
SSO_GITLAB_HOST https://gitlab.com The GitLab base URL
SSO_GITLAB_BASE_URL The GitLab base URL
SSO_GITLAB_CLIENT_ID The GitLab client ID
SSO_GITLAB_CLIENT_SECRET The GitLab client secret

Keycloak

Config Default Description
SSO_KEYCLOAK_ENABLED false Enable SSO authentication for Keycloak
SSO_KEYCLOAK_BASE_URL The Keycloak base URL
SSO_KEYCLOAK_CLIENT_ID The Keycloak client ID
SSO_KEYCLOAK_CLIENT_SECRET The Keycloak client secret
SSO_KEYCLOAK_REALM The Keycloak realm

Microsoft Azure

Config Default Description
SSO_AZURE_ENABLED false Enable SSO authentication for Azure
SSO_AZURE_CLIENT_ID The Azure client ID
SSO_AZURE_CLIENT_SECRET The Azure client secret
SSO_AZURE_TENANT_ID The Azure tenant ID

Okta

Config Default Description
SSO_OKTA_ENABLED false Enable SSO authentication for Okta
SSO_OKTA_BASE_URL The Okta base URL
SSO_OKTA_CLIENT_ID The Okta client ID
SSO_OKTA_CLIENT_SECRET The Okta client secret

Zitadel

Config Default Description
SSO_ZITADEL_ENABLED false Enable SSO authentication for Zitadel
SSO_ZITADEL_CLIENT_ID The Zitadel Client ID
SSO_ZITADEL_CLIENT_SECRET The Zitadel Client Secret
SSO_ZITADEL_BASE_URL The Zitadel base URL
SSO_ZITADEL_ORGANIZATION_ID The Zitadel organization ID
SSO_ZITADEL_PROJECT_ID The Zitadel project ID
SSO_ZITADEL_POST_LOGOUT_REDIRECT_URI / Where to redirect to in LinkAce after logging out