Skip to main content
SAML-login wordt afgehandeld door de web-service (de module authentication) in elke Ayakaleaf Pro-pod. Er is geen achtergrondtaak en geen aparte pod. Richt de identity provider (IdP) in zoals in SAML-authenticatie en zet de waarden en het IdP-certificaat daarna in Kubernetes zoals hieronder.

Waar wat draait

Configuratie

1

Registreer Overleaf bij de IdP

De goauthentik-handleiding laat zien waar deze te vinden zijn.
2

Zet het IdP-certificaat in de Secret overleaf-certs

De Toolkit leest het certificaat uit data/overleaf/certs/. Op Kubernetes komt het uit de Secret overleaf-certs, gemount op /var/lib/overleaf/certs zoals beschreven in Certificaten en andere bestanden:
Als de Secret al bestaat, voeg het bestand er dan aan toe: verwijder hem en maak hem opnieuw aan met elke --from-file, of gebruik kubectl -n overleaf edit secret overleaf-certs.OVERLEAF_SAML_IDP_CERT accepteert een pad, of tijdens een certificaatwissel een JSON-lijst met paden. De PEM-tekst zelf wordt niet geaccepteerd.
3

Voeg de instellingen toe aan de ConfigMap

30-config.yaml (additions)
Elke OVERLEAF_SAML_*-instelling staat vermeld in Omgevingsvariabelen. Ze gaan allemaal in de ConfigMap: geen ervan is zelf geheim. Sleutelbestanden (OVERLEAF_SAML_PRIVATE_KEY, OVERLEAF_SAML_DECRYPTION_PVK) gaan in overleaf-certs, en de ConfigMap bevat hun paden.
Zet "true", "false" en JSON-waarden zoals OVERLEAF_SAML_AUTHN_CONTEXT: '["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"]' tussen aanhalingstekens. Een instelling die geen geldige boolean- of JSON-waarde is, zorgt ervoor dat de SAML-strategie niet laadt terwijl de pod toch gereed meldt; inloggen via SAML mislukt dan. Controleer web.log na elke wijziging, zie de vragen en antwoorden hieronder.
4

Toepassen en herstarten

Het IdP-certificaat en de sleutels worden gelezen wanneer web start, dus een nieuw certificaat in overleaf-certs vereist ook deze herstart.

Meerdere replica’s

De IdP stuurt de gebruiker terug naar de ACS-URL met een cross-site POST. Browsers sturen daar geen SameSite=Lax-cookies mee, dus het verzoek bevat noch de sessiecookie van Overleaf noch, in Chrome en Edge, de sticky cookie van de load balancer, en het kan bij elke replica aankomen. Met de standaardinstellingen maakt dat niet uit: de replica die het ontvangt, maakt de sessie aan in Redis en de load balancer houdt de gebruiker vanaf dan daar.
Laat OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO niet ingesteld (de standaardwaarde is never) wanneer je meerdere replica’s draait. Met always of ifPresent onthoudt elke replica de verzoeken die hij naar de IdP heeft gestuurd in zijn eigen geheugen, en een antwoord dat bij een andere replica aankomt, wordt geweigerd met “InResponseTo is not valid”: de gebruiker blijft op /saml/login/callback. In onze test met drie replica’s en always mislukten 12 van de 19 SAML-testgevallen op deze manier, terwijl ze allemaal slaagden met de standaardwaarde. Met één replica slagen de SAML-logins ook met always.

Getest op Kubernetes

Met goauthentik als IdP (HTTP-POST-binding, ondertekende assertions en responses), op Kubernetes 1.37 met drie replica’s achter HAProxy, slagen onze end-to-endtests voor SAML (19 gevallen): de eerste beheerder vanaf het launchpad die via SAML inlogt, inloggen met het IdP-certificaat uit overleaf-certs, account aanmaken en opnieuw inloggen, de beheerderstoewijzing per groep en zonder toewijzing, naam en beheerdersvlag bijgewerkt bij elke login, uitloggen via de IdP, wachtwoordregels voor SAML-accounts, en geschorste accounts. OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO bleef op de standaardwaarde.

Vragen en antwoorden

Antwoord: De SAML-strategie kon niet worden geladen. De pod wordt toch gereed, dus kijk in het web-log van elke pod:
Veelvoorkomende oorzaken: OVERLEAF_SAML_IDP_CERT verwijst naar een bestand dat niet in overleaf-certs staat, een boolean die niet "true" of "false" is, of ongeldige JSON. Als EXTERNAL_AUTH meerdere methoden bevat, schakelt zo’n fout ook de methoden na SAML uit (ldap, dan saml, dan oidc).
Antwoord: Geen van beide, voor inloggen en uitloggen: de IdP en Overleaf wisselen alleen berichten uit via de browser van de gebruiker. Alleen als je de IdP configureert met een metadata-URL, downloadt deze ${OVERLEAF_SITE_URL}/saml/meta.
Laatst gewijzigd op 2 november 2026