Skip to main content
Logowaniem SAML zajmuje się usługa web (moduł authentication) w każdym podzie Ayakaleaf Pro. Nie ma ono zadania w tle ani osobnego poda. Skonfiguruj dostawcę tożsamości (IdP) zgodnie z Uwierzytelnianie SAML, a następnie umieść wartości i certyfikat IdP w Kubernetes, jak opisano poniżej.

Gdzie co działa

Konfiguracja

1

Zarejestruj Overleaf u dostawcy IdP

Przewodnik dla goauthentik pokazuje, gdzie się one znajdują.
2

Umieść certyfikat IdP w Secret overleaf-certs

Toolkit odczytuje certyfikat z data/overleaf/certs/. Na Kubernetes pochodzi on z Secret overleaf-certs, zamontowanego w /var/lib/overleaf/certs, jak opisano w Certyfikaty i inne pliki:
Jeśli Secret już istnieje, dodaj do niego plik: usuń go i utwórz ponownie z każdym --from-file albo użyj kubectl -n overleaf edit secret overleaf-certs.OVERLEAF_SAML_IDP_CERT przyjmuje ścieżkę lub — podczas wymiany certyfikatu — listę ścieżek w formacie JSON. Nie przyjmuje samego tekstu PEM.
3

Dodaj ustawienia do ConfigMap

30-config.yaml (additions)
Każde ustawienie OVERLEAF_SAML_* jest wymienione w Zmienne środowiskowe. Wszystkie trafiają do ConfigMap: żadne z nich samo w sobie nie jest sekretem. Pliki kluczy (OVERLEAF_SAML_PRIVATE_KEY, OVERLEAF_SAML_DECRYPTION_PVK) trafiają do overleaf-certs, a ConfigMap przechowuje ich ścieżki.
Ujmij w cudzysłów "true", "false" i wartości JSON, takie jak OVERLEAF_SAML_AUTHN_CONTEXT: '["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"]'. Ustawienie, które nie jest prawidłową wartością logiczną lub JSON, powoduje, że strategia SAML nie zostaje załadowana, choć pod nadal zgłasza gotowość; logowanie przez SAML kończy się wtedy niepowodzeniem. Sprawdzaj web.log po każdej zmianie, zobacz Pytania i odpowiedzi poniżej.
4

Zastosuj i zrestartuj

Certyfikat IdP i klucze są odczytywane przy starcie web, więc nowy certyfikat w overleaf-certs również wymaga tego restartu.

Kilka replik

IdP odsyła użytkownika na adres ACS URL za pomocą międzywitrynowego żądania POST. Przeglądarki nie wysyłają z nim ciasteczek SameSite=Lax, więc żądanie nie zawiera ani ciasteczka sesji Overleaf, ani — w Chrome i Edge — ciasteczka sticky load balancera i może trafić do dowolnej repliki. Przy ustawieniach domyślnych nie ma to znaczenia: replika, która je odbierze, tworzy sesję w Redis, a load balancer od tej chwili kieruje użytkownika do niej.
Pozostaw OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO nieustawione (domyślnie never), gdy uruchamiasz kilka replik. Przy always lub ifPresent każda replika zapamiętuje we własnej pamięci żądania wysłane do IdP, a odpowiedź, która trafi do innej repliki, zostaje odrzucona z komunikatem „InResponseTo is not valid”: użytkownik pozostaje na /saml/login/callback. W naszym teście z trzema replikami i always 12 z 19 przypadków testowych SAML zakończyło się w ten sposób niepowodzeniem, podczas gdy przy wartości domyślnej wszystkie przeszły. Przy jednej replice logowania SAML przechodzą również z always.

Przetestowano na Kubernetes

Z goauthentik jako IdP (powiązanie HTTP-POST, podpisane asercje i odpowiedzi), na Kubernetes 1.37 z trzema replikami za HAProxy, nasze testy end-to-end dla SAML przechodzą pomyślnie (19 przypadków): pierwszy administrator z launchpada logujący się przez SAML, logowanie z certyfikatem IdP z overleaf-certs, tworzenie konta i ponowne logowanie, mapowanie administratora według grupy i bez mapowania, aktualizacja imienia i flagi administratora przy każdym logowaniu, wylogowanie przez IdP, zasady haseł dla kont SAML oraz zawieszone konta. OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO pozostawiono z wartością domyślną.

Pytania i odpowiedzi

Odpowiedź: Strategia SAML nie została załadowana. Pod mimo to staje się gotowy, więc zajrzyj do logu web każdego poda:
Typowe przyczyny: OVERLEAF_SAML_IDP_CERT wskazuje na plik, którego nie ma w overleaf-certs, wartość logiczna inna niż "true" lub "false" albo nieprawidłowy JSON. Gdy EXTERNAL_AUTH wymienia kilka metod, taki błąd wyłącza także metody następujące po SAML (ldap, potem saml, potem oidc).
Odpowiedź: Przy logowaniu i wylogowaniu ani jedno, ani drugie: IdP i Overleaf wymieniają komunikaty wyłącznie przez przeglądarkę użytkownika. Tylko jeśli skonfigurujesz IdP z adresem URL metadanych, pobiera on ${OVERLEAF_SITE_URL}/saml/meta.
Ostatnia modyfikacja 2 listopada 2026