Wewnętrznie moduł SAML Overleaf korzysta z biblioteki passport-saml; większość poniższych opcji konfiguracyjnych jest przekazywana do passport-saml. Jeśli masz problemy z konfiguracją SAML, warto przeczytać README biblioteki passport-saml, aby zorientować się, jakiej konfiguracji oczekuje.Do włączenia modułu uwierzytelniania SAML wymagana jest zmienna środowiskowa EXTERNAL_AUTH. Określa ona, które zewnętrzne metody uwierzytelniania są aktywne. Wartością tej zmiennej jest lista. Jeśli lista zawiera saml, uwierzytelnianie SAML zostanie włączone.Na przykład: EXTERNAL_AUTH=ldap samlPrzy metodzie uwierzytelniania SAML użytkownik jest przekierowywany na stronę uwierzytelniania dostawcy tożsamości (IdP). Jeśli IdP pomyślnie uwierzytelni użytkownika, w bazie użytkowników Overleaf wyszukiwany jest rekord zawierający pole samlIdentifiers o następującej strukturze:
Wartość externalUserId musi odpowiadać wartości właściwości określonej przez userIdAttribute w profilu użytkownika zwróconym przez serwer IdP.Jeśli nie zostanie znaleziony pasujący rekord, w bazie danych wyszukiwany jest użytkownik, którego główny adres e-mail odpowiada adresowi e-mail w profilu użytkownika IdP:
Jeśli taki użytkownik zostanie znaleziony, pole hashedPassword jest usuwane, aby wyłączyć uwierzytelnianie lokalne, i dodawane jest pole samlIdentifiers.
Jeśli nie zostanie znaleziony pasujący użytkownik, tworzony jest nowy użytkownik z adresem e-mail i samlIdentifiers z profilu IdP.
Uwaga: obecnie obsługiwany jest tylko jeden IdP SAML. Pole providerId w samlIdentifiers ma stałą wartość '1'.
Wyświetlana nazwa usługi tożsamości, używana na stronie logowania (domyślnie: Log in with SAML IdP).
OVERLEAF_SAML_USER_ID_FIELD
Wartość tego atrybutu będzie używana przez Overleaf jako zewnętrzny identyfikator użytkownika; domyślnie nameID.
OVERLEAF_SAML_EMAIL_FIELD
Nazwa pola adresu e-mail w profilu użytkownika; domyślnie nameID.
OVERLEAF_SAML_FIRST_NAME_FIELD
Nazwa pola firstName w profilu użytkownika; domyślnie givenName.
OVERLEAF_SAML_LAST_NAME_FIELD
Nazwa pola lastName w profilu użytkownika; domyślnie lastName
OVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN
Jeśli ustawiono na true, przy logowaniu aktualizowane są pola first_name i last_name użytkownika, a formularz danych użytkownika na stronie /user/settings zostaje wyłączony.
Przykład dla Azure: https://login.microsoftonline.com/8b26b46a-6dd3-45c7-a104-f883f4db1f6b/saml2
OVERLEAF_SAML_ISSUER(wymagana)
Nazwa wystawcy (Issuer).
OVERLEAF_SAML_AUDIENCE
Oczekiwana wartość Audience w odpowiedzi SAML; domyślnie wartość OVERLEAF_SAML_ISSUER.
OVERLEAF_SAML_IDP_CERT(wymagana)
Ścieżka do pliku zawierającego publiczny certyfikat dostawcy tożsamości, używany do weryfikacji podpisów przychodzących odpowiedzi SAML. Jeśli dostawca tożsamości ma kilka ważnych certyfikatów podpisujących, może to być tablica JSON ze ścieżkami do certyfikatów.
Przykład (jeden certyfikat): /var/lib/overleaf/certs/idp_cert.pem
Przykład (wiele certyfikatów): ["var/lib/overleaf/certs/idp_cert.pem", "/var/lib/overleaf/certs/idp_cert_old.pem"]
OVERLEAF_SAML_PUBLIC_CERT
Ścieżka do pliku zawierającego publiczny certyfikat podpisujący, osadzany w żądaniach uwierzytelniania, aby IdP mógł weryfikować podpisy przychodzących żądań SAML. Jest wymagany przy konfigurowaniu punktu końcowego metadanych, gdy strategia jest skonfigurowana z OVERLEAF_SAML_PRIVATE_KEY. Aby obsłużyć rotację certyfikatów, można podać tablicę JSON ze ścieżkami do certyfikatów. W takim przypadku pierwszy element tablicy powinien odpowiadać bieżącemu OVERLEAF_SAML_PRIVATE_KEY. Dodatkowe elementy tablicy mogą służyć do publikowania przyszłych certyfikatów dla IdP przed zmianą OVERLEAF_SAML_PRIVATE_KEY.
OVERLEAF_SAML_PRIVATE_KEY
Ścieżka do pliku zawierającego klucz prywatny w formacie PEM, odpowiadający OVERLEAF_SAML_PUBLIC_CERT, używany do podpisywania żądań uwierzytelniania wysyłanych przez passport-saml.
Ścieżka do pliku zawierającego klucz prywatny odpowiadający OVERLEAF_SAML_DECRYPTION_CERT, który będzie używany do próby odszyfrowania wszystkich otrzymanych zaszyfrowanych asercji.
OVERLEAF_SAML_SIGNATURE_ALGORITHM
Opcjonalnie ustawia algorytm podpisu dla podpisywania żądań; prawidłowe wartości to ‘sha1’ (domyślna), ‘sha256’ (zalecana), ‘sha512’ (najbezpieczniejsza, sprawdź, czy Twój IdP ją obsługuje).
OVERLEAF_SAML_ADDITIONAL_PARAMS
Słownik JSON z dodatkowymi parametrami zapytania dodawanymi do wszystkich żądań.
OVERLEAF_SAML_ADDITIONAL_AUTHORIZE_PARAMS
Słownik JSON z dodatkowymi parametrami zapytania dodawanymi do żądań ‘authorize’.
Przykład: {"some_key": "some_value"}
OVERLEAF_SAML_IDENTIFIER_FORMAT
Format identyfikatora nazwy, o który należy poprosić dostawcę tożsamości (domyślnie: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress). W przypadku użycia urn:oasis:names:tc:SAML:2.0:nameid-format:persistent upewnij się, że zdefiniowano zmienną środowiskową OVERLEAF_SAML_EMAIL_FIELD. Jeśli wymagany jest urn:oasis:names:tc:SAML:2.0:nameid-format:transient, musisz także zdefiniować zmienną środowiskową OVERLEAF_SAML_USER_ID_FIELD, którą można na przykład ustawić na adres e-mail użytkownika.
OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MS
Akceptowalna różnica czasu (w milisekundach) między klientem a serwerem podczas sprawdzania znaczników czasu warunków ważności asercji OnBefore i NotOnOrAfter. Ustawienie -1 całkowicie wyłącza sprawdzanie tych warunków. Domyślnie 0.
OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEX
Atrybut AttributeConsumingServiceIndex dodawany do AuthnRequest, aby wskazać IdP, który zestaw atrybutów dołączyć do odpowiedzi (link).
OVERLEAF_SAML_AUTHN_CONTEXT
Tablica JSON wartości formatu identyfikatora nazwy dla żądanego kontekstu uwierzytelniania. Domyślnie: ["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"].
OVERLEAF_SAML_FORCE_AUTHN
Jeśli true, początkowe żądanie SAML od dostawcy usług określa, że IdP powinien wymusić ponowne uwierzytelnienie użytkownika, nawet jeśli ma on ważną sesję.
OVERLEAF_SAML_DISABLE_REQUESTED_AUTHN_CONTEXT
Jeśli true, nie jest żądany określony kontekst uwierzytelniania. Możesz na przykład ustawić tę wartość na true, aby zezwolić na dodatkowe konteksty, takie jak logowanie bez hasła (urn:oasis:names:tc:SAML:2.0:ac:classes:X509). Obsługa dodatkowych kontekstów zależy od Twojego IdP.
OVERLEAF_SAML_AUTHN_REQUEST_BINDING
Jeśli ustawiono na HTTP-POST, uwierzytelnianie jest żądane od IdP za pomocą powiązania HTTP POST; w przeciwnym razie domyślnie używane jest HTTP-Redirect.
OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO
Jeśli always, InResponseTo będzie weryfikowane w przychodzących odpowiedziach SAML.
Jeśli never, InResponseTo nie będzie weryfikowane (domyślnie).
Jeśli ifPresent, InResponseTo będzie weryfikowane tylko wtedy, gdy występuje w przychodzącej odpowiedzi SAML.
OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED i OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED
Gdy ustawiono na true (domyślnie), Overleaf oczekuje, że odpowiednio asercje SAML lub cała odpowiedź uwierzytelniania SAML będą podpisane przez IdP. Gdy obie opcje mają wartość false, podpisana musi być co najmniej jedna z asercji lub odpowiedź.
OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS
Określa czas wygaśnięcia, po którym identyfikator żądania wygenerowany dla żądania SAML nie będzie ważny, jeśli pojawi się w polu InResponseTo odpowiedzi SAML. Domyślnie: 28800000 (8 godzin).
OVERLEAF_SAML_LOGOUT_URL
Adres bazowy, pod który wysyłane są żądania wylogowania (domyślnie: entryPoint).
Słownik JSON z dodatkowymi parametrami zapytania dodawanymi do żądań ‘logout’.
OVERLEAF_SAML_IS_ADMIN_FIELD i OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE
Gdy obie zmienne środowiskowe są ustawione, proces logowania ustawia user.isAdmin = true, jeśli profil zwrócony przez IdP SAML zawiera atrybut określony przez OVERLEAF_SAML_IS_ADMIN_FIELD, a jego wartość odpowiada OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE lub jest tablicą zawierającą OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE; w przeciwnym razie user.isAdmin jest ustawiane na false. Jeśli którakolwiek z tych zmiennych nie jest ustawiona, status administratora jest ustawiany na true tylko podczas tworzenia użytkownika-administratora w Launchpad.
Metadane dla dostawcy tożsamościBieżąca wersja Overleaf CE zawiera punkt końcowy do pobierania metadanych dostawcy usług (Service Provider): http://my-overleaf-instance.com/saml/metaDostawcę tożsamości należy skonfigurować tak, aby rozpoznawał serwer Overleaf jako „dostawcę usług” (Service Provider). Instrukcje, jak to zrobić, znajdziesz w dokumentacji swojego serwera SAML.Poniżej znajduje się przykład odpowiednich metadanych dostawcy usług:
Zwróć uwagę na certyfikaty, AssertionConsumerService.Location, SingleLogoutService.Location oraz EntityDescriptor.entityID i ustaw je odpowiednio w konfiguracji IdP albo wyślij plik metadanych administratorowi IdP.
Przykładowy plik variables.env (minimalny)
OVERLEAF_APP_NAME="Our Overleaf Instance"ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url# Enables Thumbnail generation using ImageMagickENABLE_CONVERSIONS=true# Disables email confirmation requirementEMAIL_CONFIRMATION_DISABLED=true## Nginx# NGINX_WORKER_PROCESSES=4# NGINX_WORKER_CONNECTIONS=768## Set for TLS via nginx-proxy# OVERLEAF_BEHIND_PROXY=true# OVERLEAF_SECURE_COOKIE=trueOVERLEAF_SITE_URL=http://my-overleaf-instance.comOVERLEAF_NAV_TITLE=Our Overleaf Instance# OVERLEAF_HEADER_IMAGE_URL=http://somewhere.com/mylogo.pngOVERLEAF_ADMIN_EMAIL=support@example.comOVERLEAF_LEFT_FOOTER=[{"text": "Contact your support team", "url": "mailto:support@example.com"}]OVERLEAF_RIGHT_FOOTER=[{"text":"Hello, I am on the Right", "url":"https://github.com/yu-i-i/overleaf-cep"}]OVERLEAF_EMAIL_FROM_ADDRESS=team@example.comOVERLEAF_EMAIL_SMTP_HOST=smtp.example.comOVERLEAF_EMAIL_SMTP_PORT=587OVERLEAF_EMAIL_SMTP_SECURE=false# OVERLEAF_EMAIL_SMTP_USER=# OVERLEAF_EMAIL_SMTP_PASS=# OVERLEAF_EMAIL_SMTP_NAME=OVERLEAF_EMAIL_SMTP_LOGGER=falseOVERLEAF_EMAIL_SMTP_TLS_REJECT_UNAUTH=trueOVERLEAF_EMAIL_SMTP_IGNORE_TLS=falseOVERLEAF_CUSTOM_EMAIL_FOOTER=This system is run by department xOVERLEAF_PROXY_LEARN=trueNAV_HIDE_POWERED_BY=true################### SAML ###################EXTERNAL_AUTH=samlOVERLEAF_SAML_ISSUER=MyOverleafOVERLEAF_SAML_IDENTITY_SERVICE_NAME='Log in with SAML Provider'OVERLEAF_SAML_EMAIL_FIELD=EmailOVERLEAF_SAML_FIRST_NAME_FIELD=DisplayNameOVERLEAF_SAML_LAST_NAME_FIELD=DisplayNameOVERLEAF_SAML_ENTRYPOINT=http://localhost:18000/login/saml/authorize/admin/SAML_OverleafOVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pemOVERLEAF_SAML_SIGNATURE_ALGORITHM=
Poniżej opisano konfigurację przetestowaną z goauthentik. Zastąp https://overleaf.example.com swoim OVERLEAF_SITE_URL, a https://authentik.example.com adresem swojej instancji Authentik.
1
Utwórz dostawcę i aplikację
W Authentik otwórz Applications > Applications i kliknij New Application. Kreator tworzy aplikację wraz z jej dostawcą.1. Nadaj aplikacji nazwę i slug, na przykład overleaf, i kliknij Next:
OVERLEAF_SAML_ENTRYPOINT i OVERLEAF_SAML_LOGOUT_URL
Audience
OVERLEAF_SAML_ISSUER
Download signing certificate (plik)
OVERLEAF_SAML_IDP_CERT, patrz następny krok
EntityID/Issuer w sekcji SAML Configuration to nazwa samego Authentik. Nie wpisuj jej do OVERLEAF_SAML_ISSUER; użyj wartości Audience.
3
Zainstaluj certyfikat podpisujący
Kliknij Download pod Download signing certificate i zapisz plik jako data/overleaf/certs/idp_cert.pem w katalogu Toolkit. Kontener widzi go jako /var/lib/overleaf/certs/idp_cert.pem:
Grupy są przesyłane jako http://schemas.xmlsoap.org/claims/Group, czyli lista. Aby członkowie grupy Authentik Admins stali się administratorami Overleaf:
Flaga administratora jest aktualizowana przy każdym logowaniu SAML. Przy błędnym polu lub wartości każdy administrator logujący się przez SAML traci uprawnienia administratora. Najpierw przetestuj mapowanie na drugim koncie administratora.
Przetestowany plik variables.env dla goauthentik
variables.env
EXTERNAL_AUTH=samlOVERLEAF_SAML_IDENTITY_SERVICE_NAME=Log in with AuthentikOVERLEAF_SAML_ENTRYPOINT=https://authentik.example.com/application/saml/overleaf/OVERLEAF_SAML_LOGOUT_URL=https://authentik.example.com/application/saml/overleaf/OVERLEAF_SAML_ISSUER=overleafOVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pemOVERLEAF_SAML_WANT_ASSERTIONS_SIGNED=trueOVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED=trueOVERLEAF_SAML_USER_ID_FIELD=http://schemas.goauthentik.io/2021/02/saml/usernameOVERLEAF_SAML_EMAIL_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddressOVERLEAF_SAML_FIRST_NAME_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameOVERLEAF_SAML_LAST_NAME_FIELD=http://schemas.goauthentik.io/2021/02/saml/usernameOVERLEAF_SAML_IS_ADMIN_FIELD=http://schemas.xmlsoap.org/claims/GroupOVERLEAF_SAML_IS_ADMIN_FIELD_VALUE=AdminsOVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN=true
Ostatnia modyfikacja 6 października 2026
Czy ta strona była pomocna?
Assistant
Responses are generated using AI and may contain mistakes.