Skip to main content
Deze functie is ontwikkeld door yu-i-i/overleaf-cep. Hier bieden we wat documentatie voor je configuratie.

Configuratie

Intern gebruikt de OIDC-module van Overleaf de bibliotheek passport-openidconnect. Als je problemen hebt met het configureren van OpenID Connect, is het de moeite waard om de README van passport-openidconnect te lezen om een idee te krijgen van de configuratie die deze verwacht. De omgevingsvariabele EXTERNAL_AUTH is vereist om de OIDC-authenticatiemodule in te schakelen. Deze omgevingsvariabele geeft aan welke externe authenticatiemethoden worden geactiveerd. De waarde van deze variabele is een lijst. Als de lijst oidc bevat, wordt OIDC-authenticatie geactiveerd. Bijvoorbeeld: EXTERNAL_AUTH=ldap oidc Bij gebruik van de OIDC-authenticatiemethode wordt een gebruiker doorgestuurd naar de authenticatiesite van de Identity Provider (IdP). Als de IdP de gebruiker succesvol authenticeert, wordt in de gebruikersdatabase van Overleaf gezocht naar een record met een veld thirdPartyIdentifiers met de volgende structuur:
De externalUserId moet overeenkomen met het gebruikers-ID in het profiel dat door de IdP-server wordt geretourneerd (zie de omgevingsvariabele OVERLEAF_OIDC_USER_ID_FIELD), en providerId moet overeenkomen met het ID van de OIDC-provider (zie OVERLEAF_OIDC_PROVIDER_ID). Als er geen overeenkomend record wordt gevonden, wordt in de database gezocht naar een gebruiker van wie het primaire e-mailadres overeenkomt met het e-mailadres in het gebruikersprofiel van de IdP:
  • Als zo’n gebruiker wordt gevonden, wordt het veld thirdPartyIdentifiers bijgewerkt.
  • Als er geen overeenkomende gebruiker wordt gevonden en het JIT-aanmaken van accounts niet is uitgeschakeld, wordt een nieuwe gebruiker aangemaakt met het e-mailadres en de thirdPartyIdentifiers uit het IdP-profiel.
In beide gevallen wordt gezegd dat de gebruiker ‘gekoppeld’ is aan de externe OIDC-gebruiker. De gebruiker kan op de pagina /user/settings worden ontkoppeld van de OIDC-provider.

De waarden vinden met het discovery-document

Elke OpenID Provider (OP) publiceert een discovery-document op <issuer>/.well-known/openid-configuration. Kopieer de waarden daaruit in plaats van ze met de hand over te typen; één verkeerd teken is genoeg om het inloggen te laten mislukken.
1

Zoek de discovery-URL

Je OP toont deze op de pagina van de client (provider) die je voor Overleaf hebt aangemaakt. Open in Authentik Applications > Providers, selecteer de provider en zoek naar OpenID Configuration URL en OpenID Configuration Issuer:

Authentik: de discovery-URL en de issuer van een provider (testinstantie)

De URL ziet er meestal zo uit:
  • Keycloak: https://keycloak.example.com/realms/<realm>/.well-known/openid-configuration
  • Authentik: https://authentik.example.com/application/o/<application-slug>/.well-known/openid-configuration
2

Lees de waarden uit

Open de URL in een browser, of voer op de Overleaf-server uit:
Het antwoord van Authentik ziet er zo uit:
Authentik vermeldt deze URL’s ook verderop op de providerpagina:

Authentik: de endpoints van een provider (testinstantie)

3

Kopieer ze naar variables.env

4

Controleer of Overleaf de OP kan bereiken

Overleaf roept de token- en userinfo-endpoints aan vanuit zijn container, dus de OP moet vanaf daar bereikbaar zijn, niet alleen vanuit je browser:
Dit zou 200 moeten tonen.
Kopieer issuer exact, inclusief de afsluitende slash. Overleaf vergelijkt deze teken voor teken met de issuer in het ID-token; elk verschil laat elke OIDC-aanmelding mislukken met:{"message":{"message":"ID token not issued by expected OpenID provider."}}In Authentik hoort de issuer bij de applicatie (.../application/o/<application-slug>/). Het is niet het adres van de Authentik-server, hoewel de authorize-, token- en userinfo-URL’s door alle applicaties worden gedeeld.

Omgevingsvariabelen

De waarden van de volgende vijf verplichte variabelen kun je vinden via het endpoint .well-known/openid-configuration van je OpenID Provider (OP), zie hierboven.
  • OVERLEAF_OIDC_ISSUER (verplicht)
  • OVERLEAF_OIDC_AUTHORIZATION_URL (verplicht)
  • OVERLEAF_OIDC_TOKEN_URL (verplicht)
  • OVERLEAF_OIDC_USER_INFO_URL (verplicht)
  • OVERLEAF_OIDC_LOGOUT_URL (verplicht)
De waarden van de volgende twee verplichte variabelen worden verstrekt door de beheerder van je OP
  • OVERLEAF_OIDC_CLIENT_ID (verplicht)
  • OVERLEAF_OIDC_CLIENT_SECRET (verplicht)
  • OVERLEAF_OIDC_SCOPE
    • Standaard: openid profile email
  • OVERLEAF_OIDC_PROVIDER_ID
    • Willekeurig ID van de OP, standaard oidc.
  • OVERLEAF_OIDC_PROVIDER_NAME
    • De naam van de OP, gebruikt in de sectie Linked Accounts van de pagina /user/settings, standaard OIDC Provider.
  • OVERLEAF_OIDC_IDENTITY_SERVICE_NAME
    • Weergavenaam voor de identiteitsdienst, gebruikt op de inlogpagina (standaard: Log in with $OVERLEAF_OIDC_PROVIDER_NAME).
  • OVERLEAF_OIDC_PROVIDER_DESCRIPTION
    • Beschrijving van de OP, gebruikt in de sectie Linked Accounts (standaard: Log in with $OVERLEAF_OIDC_PROVIDER_NAME).
  • OVERLEAF_OIDC_PROVIDER_INFO_LINK
    • URL voor Learn more in de beschrijving van de OP; standaard: geen Learn more-link in de beschrijving.
  • OVERLEAF_OIDC_PROVIDER_HIDE_NOT_LINKED
    • Toon de OP niet op de pagina /user/settings als het account van de gebruiker niet aan de OP is gekoppeld; standaard false.
  • OVERLEAF_OIDC_USER_ID_FIELD
    • De waarde van dit attribuut wordt door Overleaf gebruikt als het externe gebruikers-ID, standaard id. Andere mogelijke redelijke waarden zijn email en username (overeenkomend met de OIDC-claim preferred_username).
  • OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS
    • Beperkt het Just-in-Time (JIT) aanmaken van accounts voor gebruikers die zich via OIDC authenticeren. Als deze is ingesteld op een door komma’s gescheiden lijst met domeinnamen, wordt alleen een nieuw account aangemaakt als het domein van het e-mailadres van de gebruiker overeenkomt met een van de vermelde domeinen. Als het domein niet overeenkomt, moet een beheerder het gebruikersaccount handmatig aanmaken met het e-mailadres van de OIDC-gebruiker, met een sterk willekeurig wachtwoord of bij voorkeur helemaal zonder het veld hashedPassword. Domeinnamen mogen beginnen met een *.-jokerteken om subdomeinen te matchen.
      • Voorbeeld: om JIT-accountaanmaak toe te staan voor gebruikers met e-mailadressen zoals name@example.com en name@math.example.com:
        OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=example.com, *.example.com
      • Voorbeeld: om JIT-accountaanmaak volledig uit te schakelen:
        OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS=
  • OVERLEAF_OIDC_UPDATE_USER_DETAILS_ON_LOGIN
    • Als deze is ingesteld op true, worden de velden first_name en last_name van de gebruiker bij het inloggen bijgewerkt en wordt het formulier met gebruikersgegevens op de pagina /user/settings uitgeschakeld.
  • OVERLEAF_OIDC_IS_ADMIN_FIELD en OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE
    • Wanneer beide omgevingsvariabelen zijn ingesteld, stelt het inlogproces user.isAdmin = true in als het door de OP geretourneerde profiel het attribuut bevat dat is opgegeven door OVERLEAF_OIDC_IS_ADMIN_FIELD en de waarde ervan overeenkomt met OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE of een array is die OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE bevat (bijvoorbeeld de claim groups); anders wordt user.isAdmin ingesteld op false. Als OVERLEAF_OIDC_IS_ADMIN_FIELD gelijk is aan email, wordt de waarde van het attribuut emails[0].value gebruikt voor de controle.
De redirect-URL voor je OpenID Provider is https://my-overleaf-instance.com/oidc/login/callback.
variables.env

Stap voor stap: goauthentik

Hieronder doorlopen we een setup die is getest met goauthentik. Vervang https://overleaf.example.com door je OVERLEAF_SITE_URL en https://authentik.example.com door het adres van je Authentik.
1

Maak de provider aan

Open in Authentik Applications > Providers, klik op New Provider, kies OAuth2/OpenID Provider en klik op Next.
  • Client Type: Confidential.
  • Redirect URIs (onder Protocol settings): voeg https://overleaf.example.com/oidc/login/callback toe met de matching-modus Strict.
  • Kopieer nu Client ID en Client Secret naar OVERLEAF_OIDC_CLIENT_ID en OVERLEAF_OIDC_CLIENT_SECRET.

Authentik: Client ID en Client Secret van een nieuwe provider

Authentik toont het client secret alleen tijdens het aanmaken van de provider. Later biedt het bewerkingsformulier alleen Modify, waarmee het secret wordt vervangen door een nieuw secret.
2

Maak de applicatie aan

Open Applications > Applications, maak een nieuwe applicatie aan, geef deze een naam en een slug, bijvoorbeeld overleaf, en selecteer de provider. De slug wordt onderdeel van de issuer: https://authentik.example.com/application/o/overleaf/.
3

Kopieer de URL's

Volg De waarden vinden met het discovery-document hierboven om de vijf URL’s in te vullen.
4

Koppel de beheerders (optioneel)

Authentik stuurt de groepen van de gebruiker als de claim groups, een array. Om de leden van de Authentik-groep Admins beheerder van Overleaf te maken:
De beheerdersvlag wordt bij elke OIDC-aanmelding bijgewerkt. Met een verkeerd veld of een verkeerde waarde verliest elke beheerder die via OIDC inlogt de beheerdersrechten, inclusief de beheerder die in de launchpad is aangemaakt. Test de koppeling eerst met een tweede beheerdersaccount.
variables.env
Laatst gewijzigd op 6 oktober 2026