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 SAML-module van Overleaf de bibliotheek passport-saml; de meeste van de volgende configuratieopties worden doorgegeven aan passport-saml. Als je problemen hebt met het configureren van SAML, is het de moeite waard om de README van passport-saml te lezen om een idee te krijgen van de configuratie die deze verwacht. De omgevingsvariabele EXTERNAL_AUTH is vereist om de SAML-authenticatiemodule in te schakelen. Deze omgevingsvariabele geeft aan welke externe authenticatiemethoden worden geactiveerd. De waarde van deze variabele is een lijst. Als de lijst saml bevat, wordt SAML-authenticatie geactiveerd. Bijvoorbeeld: EXTERNAL_AUTH=ldap saml Bij gebruik van de SAML-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 samlIdentifiers met de volgende structuur:
De externalUserId moet overeenkomen met de waarde van de eigenschap die door userIdAttribute is opgegeven in het gebruikersprofiel dat door de IdP-server wordt geretourneerd. 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 hashedPassword verwijderd om lokale authenticatie uit te schakelen, en wordt het veld samlIdentifiers toegevoegd.
  • Als er geen overeenkomende gebruiker wordt gevonden, wordt een nieuwe gebruiker aangemaakt met het e-mailadres en de samlIdentifiers uit het IdP-profiel.
Opmerking: Momenteel wordt slechts één SAML-IdP ondersteund. Het veld providerId in samlIdentifiers staat vast op '1'.

Omgevingsvariabelen

  • OVERLEAF_SAML_IDENTITY_SERVICE_NAME
    • Weergavenaam voor de identiteitsdienst, gebruikt op de inlogpagina (standaard: Log in with SAML IdP).
  • OVERLEAF_SAML_USER_ID_FIELD
    • De waarde van dit attribuut wordt door Overleaf gebruikt als het externe gebruikers-ID, standaard nameID.
  • OVERLEAF_SAML_EMAIL_FIELD
    • Naam van het e-mailveld in het gebruikersprofiel, standaard nameID.
  • OVERLEAF_SAML_FIRST_NAME_FIELD
    • Naam van het veld firstName in het gebruikersprofiel, standaard givenName.
  • OVERLEAF_SAML_LAST_NAME_FIELD
    • Naam van het veld lastName in het gebruikersprofiel, standaard lastName
  • OVERLEAF_SAML_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_SAML_ENTRYPOINT (verplicht)
    • Entrypoint-URL voor de SAML-identiteitsdienst.
      • Voorbeeld: https://idp.example.com/simplesaml/saml2/idp/SSOService.php
      • Azure-voorbeeld: https://login.microsoftonline.com/8b26b46a-6dd3-45c7-a104-f883f4db1f6b/saml2
  • OVERLEAF_SAML_ISSUER (verplicht)
    • De naam van de issuer.
  • OVERLEAF_SAML_AUDIENCE
    • Verwachte Audience van het SAML-antwoord, standaard de waarde van OVERLEAF_SAML_ISSUER.
  • OVERLEAF_SAML_IDP_CERT (verplicht)
    • Pad naar een bestand met het openbare certificaat van de Identity Provider, gebruikt om de handtekeningen van binnenkomende SAML-antwoorden te valideren. Als de Identity Provider meerdere geldige ondertekeningscertificaten heeft, kan dit een JSON-array met paden naar de certificaten zijn.
      • Voorbeeld (één certificaat): /var/lib/overleaf/certs/idp_cert.pem
      • Voorbeeld (meerdere certificaten): ["var/lib/overleaf/certs/idp_cert.pem", "/var/lib/overleaf/certs/idp_cert_old.pem"]
  • OVERLEAF_SAML_PUBLIC_CERT
    • Pad naar een bestand met het openbare ondertekeningscertificaat dat in authenticatieverzoeken wordt opgenomen, zodat de IdP de handtekeningen van het binnenkomende SAML-verzoek kan valideren. Dit is vereist bij het inrichten van het metadata-endpoint wanneer de strategie is geconfigureerd met een OVERLEAF_SAML_PRIVATE_KEY. Er kan een JSON-array met paden naar certificaten worden opgegeven om certificaatrotatie te ondersteunen. Bij het opgeven van een array met certificaten moet het eerste item in de array overeenkomen met de huidige OVERLEAF_SAML_PRIVATE_KEY. Extra items in de array kunnen worden gebruikt om toekomstige certificaten bij IdP’s te publiceren voordat de OVERLEAF_SAML_PRIVATE_KEY wordt gewijzigd.
  • OVERLEAF_SAML_PRIVATE_KEY
    • Pad naar een bestand met een PEM-geformatteerde privésleutel die overeenkomt met het OVERLEAF_SAML_PUBLIC_CERT, gebruikt om authenticatieverzoeken te ondertekenen die door passport-saml worden verzonden.
  • OVERLEAF_SAML_DECRYPTION_CERT
    • Pad naar een bestand met een openbaar certificaat, gebruikt voor het metadata-endpoint.
  • OVERLEAF_SAML_DECRYPTION_PVK
    • Pad naar een bestand met een privésleutel die overeenkomt met het OVERLEAF_SAML_DECRYPTION_CERT en die wordt gebruikt om te proberen ontvangen versleutelde assertions te ontsleutelen.
  • OVERLEAF_SAML_SIGNATURE_ALGORITHM
    • Stel optioneel het handtekeningalgoritme in voor het ondertekenen van verzoeken; geldige waarden zijn ‘sha1’ (standaard), ‘sha256’ (aanbevolen) en ‘sha512’ (het veiligst; controleer of je IdP dit ondersteunt).
  • OVERLEAF_SAML_ADDITIONAL_PARAMS
    • JSON-dictionary met extra queryparameters die aan alle verzoeken worden toegevoegd.
  • OVERLEAF_SAML_ADDITIONAL_AUTHORIZE_PARAMS
    • JSON-dictionary met extra queryparameters die aan ‘authorize’-verzoeken worden toegevoegd.
      • Voorbeeld: {"some_key": "some_value"}
  • OVERLEAF_SAML_IDENTIFIER_FORMAT
    • Indeling van de naam-identificatie die bij de identity provider wordt aangevraagd (standaard: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress). Als je urn:oasis:names:tc:SAML:2.0:nameid-format:persistent gebruikt, zorg er dan voor dat de omgevingsvariabele OVERLEAF_SAML_EMAIL_FIELD is gedefinieerd. Als urn:oasis:names:tc:SAML:2.0:nameid-format:transient vereist is, moet je ook de omgevingsvariabele OVERLEAF_SAML_USER_ID_FIELD definiëren, die bijvoorbeeld kan worden ingesteld op het e-mailadres van de gebruiker.
  • OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MS
    • Toegestane klokafwijking in milliseconden tussen client en server bij het controleren van de geldigheidstijdstempels OnBefore en NotOnOrAfter van assertion-voorwaarden. Met -1 wordt het controleren van deze voorwaarden volledig uitgeschakeld. Standaard is 0.
  • OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEX
    • Attribuut AttributeConsumingServiceIndex dat aan het AuthnRequest wordt toegevoegd om de IdP te laten weten welke attributenset aan het antwoord moet worden toegevoegd (link).
  • OVERLEAF_SAML_AUTHN_CONTEXT
    • JSON-array met waarden voor de naam-identificatie-indeling om een authenticatiecontext aan te vragen. Standaard: ["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"].
  • OVERLEAF_SAML_FORCE_AUTHN
    • Als deze true is, geeft het initiële SAML-verzoek van de serviceprovider aan dat de IdP de gebruiker opnieuw moet laten authenticeren, zelfs als deze een geldige sessie heeft.
  • OVERLEAF_SAML_DISABLE_REQUESTED_AUTHN_CONTEXT
    • Als deze true is, wordt geen specifieke authenticatiecontext aangevraagd. Je kunt dit bijvoorbeeld op true zetten om extra contexten toe te staan, zoals inloggen zonder wachtwoord (urn:oasis:names:tc:SAML:2.0:ac:classes:X509). Ondersteuning voor extra contexten is afhankelijk van je IdP.
  • OVERLEAF_SAML_AUTHN_REQUEST_BINDING
    • Als deze is ingesteld op HTTP-POST, wordt authenticatie bij de IdP aangevraagd via HTTP POST-binding; anders is de standaard HTTP-Redirect.
  • OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO
    • Bij always wordt InResponseTo in binnenkomende SAML-antwoorden gevalideerd.
    • Bij never wordt InResponseTo niet gevalideerd (standaard).
    • Bij ifPresent wordt InResponseTo alleen gevalideerd als het in het binnenkomende SAML-antwoord aanwezig is.
  • OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED en OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED
    • Wanneer deze zijn ingesteld op true (standaard), verwacht Overleaf dat respectievelijk de SAML-assertions of het volledige SAML-authenticatieantwoord door de IdP zijn ondertekend. Wanneer beide opties false zijn, moet ten minste een van de assertions of het antwoord zijn ondertekend.
  • OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS
    • Bepaalt na hoeveel tijd een voor een SAML-verzoek gegenereerd Request ID niet meer geldig is wanneer het in het veld InResponseTo van een SAML-antwoord voorkomt. Standaard: 28800000 (8 uur).
  • OVERLEAF_SAML_LOGOUT_URL
    • Basisadres dat met uitlogverzoeken wordt aangeroepen (standaard: entryPoint).
      • Voorbeeld: https://idp.example.com/simplesaml/saml2/idp/SingleLogoutService.php
  • OVERLEAF_SAML_ADDITIONAL_LOGOUT_PARAMS
    • JSON-dictionary met extra queryparameters die aan ‘logout’-verzoeken worden toegevoegd.
  • OVERLEAF_SAML_IS_ADMIN_FIELD en OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE
    • Wanneer beide omgevingsvariabelen zijn ingesteld, stelt het inlogproces user.isAdmin = true in als het door de SAML-IdP geretourneerde profiel het attribuut bevat dat is opgegeven door OVERLEAF_SAML_IS_ADMIN_FIELD en de waarde ervan overeenkomt met OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE of een array is die OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE bevat; anders wordt user.isAdmin ingesteld op false. Als een van deze variabelen niet is ingesteld, wordt de beheerdersstatus alleen op true gezet tijdens het aanmaken van de beheerder in Launchpad.
Metadata voor de Identity Provider De huidige versie van Overleaf CE bevat een endpoint om de metadata van de Service Provider op te halen: http://my-overleaf-instance.com/saml/meta De Identity Provider moet zo worden geconfigureerd dat deze de Overleaf-server herkent als “Service Provider”. Raadpleeg de documentatie van je SAML-server voor instructies om dit te doen. Hieronder staat een voorbeeld van geschikte Service Provider-metadata:
Noteer de certificaten, AssertionConsumerService.Location, SingleLogoutService.Location en EntityDescriptor.entityID en stel deze naar behoren in je IdP-configuratie in, of stuur het metadatabestand naar de beheerder van de IdP.

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 en de applicatie aan

Open in Authentik Applications > Applications en klik op New Application. De wizard maakt de applicatie en de bijbehorende provider samen aan.1. Geef de applicatie een naam en een slug, bijvoorbeeld overleaf, en klik op Next:

Authentik: naam en slug van de applicatie

2. Kies SAML Provider en klik op Next:

Authentik: de SAML-provider kiezen

3. Vul de provider in:
  • Authorization Flow: default-provider-authorization-implicit-consent
  • ACS URL: https://overleaf.example.com/saml/login/callback
  • Audience: een naam voor Overleaf, bijvoorbeeld overleaf. Overleaf verstuurt deze als OVERLEAF_SAML_ISSUER.

Authentik: de SAML-provider van de applicatie

4. Open Advanced protocol settings en stel in:
  • Signing Certificate: een certificaat, bijvoorbeeld authentik Self-signed Certificate
  • Sign assertions en Sign responses: beide aan
  • Service Provider Binding: Post

Authentik: ondertekening en binding van een geteste provider (testinstantie)

5. Klik op Next tot de laatste pagina en verstuur de applicatie.
2

Kopieer de waarden van de providerpagina

Open de provider opnieuw. Alles wat Overleaf nodig heeft, staat in het overzicht:

Authentik: overzicht van een SAML-provider (testinstantie)

EntityID/Issuer onder SAML Configuration is de naam van Authentik zelf. Zet deze niet in OVERLEAF_SAML_ISSUER, maar gebruik de Audience.
3

Installeer het ondertekeningscertificaat

Klik op Download onder Download signing certificate en sla het bestand op als data/overleaf/certs/idp_cert.pem in je Toolkit-map. De container ziet het als /var/lib/overleaf/certs/idp_cert.pem:
4

Koppel de attributen

Authentik verstuurt zijn attributen onder deze namen:
De groepen komen binnen als http://schemas.xmlsoap.org/claims/Group, een lijst. Om de leden van de Authentik-groep Admins beheerder van Overleaf te maken:
De beheerdersvlag wordt bij elke SAML-aanmelding bijgewerkt. Met een verkeerd veld of een verkeerde waarde verliest elke beheerder die via SAML inlogt de beheerdersrechten. Test de koppeling eerst met een tweede beheerdersaccount.
variables.env
Laatst gewijzigd op 6 oktober 2026