Skip to main content
Tuto funkci vyvíjí yu-i-i/overleaf-cep. Zde nabízíme dokumentaci pro vaši konfiguraci.

Konfigurace

Modul SAML v Overleaf interně používá knihovnu passport-saml a většina následujících konfiguračních voleb se předává přímo do passport-saml. Pokud máte potíže s konfigurací SAML, vyplatí se přečíst si README knihovny passport-saml, abyste získali představu o konfiguraci, kterou očekává. K zapnutí ověřovacího modulu SAML je vyžadována proměnná prostředí EXTERNAL_AUTH. Tato proměnná prostředí určuje, které externí metody ověřování jsou aktivovány. Hodnotou této proměnné je seznam. Pokud seznam obsahuje saml, bude aktivováno ověřování SAML. Například: EXTERNAL_AUTH=ldap saml Při použití metody ověřování SAML je uživatel přesměrován na ověřovací stránku poskytovatele identity (IdP). Pokud IdP uživatele úspěšně ověří, v databázi uživatelů Overleaf se vyhledá záznam obsahující pole samlIdentifiers s následující strukturou:
externalUserId se musí shodovat s hodnotou vlastnosti určené atributem userIdAttribute v uživatelském profilu vráceném serverem IdP. Pokud není nalezen žádný odpovídající záznam, v databázi se vyhledá uživatel, jehož primární e-mailová adresa odpovídá e-mailu v uživatelském profilu IdP:
  • Pokud je takový uživatel nalezen, pole hashedPassword se smaže, aby se vypnulo místní ověřování, a přidá se pole samlIdentifiers.
  • Pokud není nalezen žádný odpovídající uživatel, vytvoří se nový uživatel s e-mailovou adresou a samlIdentifiers z profilu IdP.
Poznámka: V současnosti je podporován pouze jeden SAML IdP. Pole providerId v samlIdentifiers má pevnou hodnotu '1'.

Proměnné prostředí

  • OVERLEAF_SAML_IDENTITY_SERVICE_NAME
    • Zobrazovaný název služby identity, používaný na přihlašovací stránce (výchozí: Log in with SAML IdP).
  • OVERLEAF_SAML_USER_ID_FIELD
    • Hodnotu tohoto atributu použije Overleaf jako externí ID uživatele; výchozí hodnota je nameID.
  • OVERLEAF_SAML_EMAIL_FIELD
    • Název pole s e-mailem v uživatelském profilu; výchozí hodnota je nameID.
  • OVERLEAF_SAML_FIRST_NAME_FIELD
    • Název pole firstName v uživatelském profilu; výchozí hodnota je givenName.
  • OVERLEAF_SAML_LAST_NAME_FIELD
    • Název pole lastName v uživatelském profilu; výchozí hodnota je lastName
  • OVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN
    • Pokud je nastaveno na true, při přihlášení se aktualizují pole uživatele first_name a last_name a formulář s údaji o uživateli na stránce /user/settings se vypne.
  • OVERLEAF_SAML_ENTRYPOINT (povinné)
    • URL vstupního bodu služby identity SAML.
      • Příklad: https://idp.example.com/simplesaml/saml2/idp/SSOService.php
      • Příklad pro Azure: https://login.microsoftonline.com/8b26b46a-6dd3-45c7-a104-f883f4db1f6b/saml2
  • OVERLEAF_SAML_ISSUER (povinné)
    • Název vydavatele (Issuer).
  • OVERLEAF_SAML_AUDIENCE
    • Očekávaná hodnota Audience v odpovědi SAML; výchozí hodnota je hodnota OVERLEAF_SAML_ISSUER.
  • OVERLEAF_SAML_IDP_CERT (povinné)
    • Cesta k souboru s veřejným certifikátem poskytovatele identity, který se používá k ověření podpisů příchozích odpovědí SAML. Pokud má poskytovatel identity více platných podpisových certifikátů, může jít o pole JSON s cestami k certifikátům.
      • Příklad (jeden certifikát): /var/lib/overleaf/certs/idp_cert.pem
      • Příklad (více certifikátů): ["var/lib/overleaf/certs/idp_cert.pem", "/var/lib/overleaf/certs/idp_cert_old.pem"]
  • OVERLEAF_SAML_PUBLIC_CERT
    • Cesta k souboru s veřejným podpisovým certifikátem, který se vkládá do požadavků na ověření, aby IdP mohl ověřit podpisy příchozího požadavku SAML. Je vyžadován při nastavování endpointu metadat, pokud je strategie nakonfigurována s OVERLEAF_SAML_PRIVATE_KEY. Pro podporu rotace certifikátů lze zadat pole JSON s cestami k certifikátům. Při zadání pole certifikátů by první položka pole měla odpovídat aktuálnímu OVERLEAF_SAML_PRIVATE_KEY. Další položky pole lze použít ke zveřejnění připravovaných certifikátů poskytovatelům IdP před změnou OVERLEAF_SAML_PRIVATE_KEY.
  • OVERLEAF_SAML_PRIVATE_KEY
    • Cesta k souboru se soukromým klíčem ve formátu PEM, který odpovídá OVERLEAF_SAML_PUBLIC_CERT a slouží k podepisování požadavků na ověření odesílaných knihovnou passport-saml.
  • OVERLEAF_SAML_DECRYPTION_CERT
    • Cesta k souboru s veřejným certifikátem, který se používá pro endpoint metadat.
  • OVERLEAF_SAML_DECRYPTION_PVK
    • Cesta k souboru se soukromým klíčem odpovídajícím OVERLEAF_SAML_DECRYPTION_CERT, který se použije k pokusu o dešifrování všech přijatých šifrovaných tvrzení (assertions).
  • OVERLEAF_SAML_SIGNATURE_ALGORITHM
    • Volitelně nastavuje algoritmus podpisu pro podepisování požadavků; platné hodnoty jsou ‘sha1’ (výchozí), ‘sha256’ (preferovaná) a ‘sha512’ (nejbezpečnější, ověřte, zda ji váš IdP podporuje).
  • OVERLEAF_SAML_ADDITIONAL_PARAMS
    • Slovník JSON s dalšími parametry dotazu, které se přidají ke všem požadavkům.
  • OVERLEAF_SAML_ADDITIONAL_AUTHORIZE_PARAMS
    • Slovník JSON s dalšími parametry dotazu, které se přidají k požadavkům ‘authorize’.
      • Příklad: {"some_key": "some_value"}
  • OVERLEAF_SAML_IDENTIFIER_FORMAT
    • Formát identifikátoru jména, který se má vyžádat od poskytovatele identity (výchozí: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress). Pokud používáte urn:oasis:names:tc:SAML:2.0:nameid-format:persistent, ujistěte se, že je definována proměnná prostředí OVERLEAF_SAML_EMAIL_FIELD. Pokud je vyžadován urn:oasis:names:tc:SAML:2.0:nameid-format:transient, musíte také definovat proměnnou prostředí OVERLEAF_SAML_USER_ID_FIELD, kterou lze například nastavit na e-mailovou adresu uživatele.
  • OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MS
    • Přijatelná odchylka hodin mezi klientem a serverem v milisekundách při kontrole platnosti časových razítek podmínek tvrzení OnBefore a NotOnOrAfter. Nastavení na -1 kontrolu těchto podmínek zcela vypne. Výchozí hodnota je 0.
  • OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEX
    • Atribut AttributeConsumingServiceIndex, který se přidá do AuthnRequest a určí IdP, kterou sadu atributů má připojit k odpovědi (odkaz).
  • OVERLEAF_SAML_AUTHN_CONTEXT
    • Pole JSON s hodnotami formátu identifikátoru jména pro vyžádání kontextu ověření. Výchozí: ["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"].
  • OVERLEAF_SAML_FORCE_AUTHN
    • Pokud je true, počáteční požadavek SAML od poskytovatele služby určí, že IdP má vynutit opětovné ověření uživatele, i když má platnou relaci.
  • OVERLEAF_SAML_DISABLE_REQUESTED_AUTHN_CONTEXT
    • Pokud je true, nevyžaduje se konkrétní kontext ověření. Můžete to například nastavit na true, abyste povolili další kontexty, jako je přihlašování bez hesla (urn:oasis:names:tc:SAML:2.0:ac:classes:X509). Podpora dalších kontextů závisí na vašem IdP.
  • OVERLEAF_SAML_AUTHN_REQUEST_BINDING
    • Pokud je nastaveno na HTTP-POST, ověření se od IdP vyžádá prostřednictvím vazby HTTP POST; jinak se ve výchozím nastavení použije HTTP-Redirect.
  • OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO
    • Pokud je always, InResponseTo se u příchozích odpovědí SAML ověřuje vždy.
    • Pokud je never, InResponseTo se neověřuje (výchozí).
    • Pokud je ifPresent, InResponseTo se ověřuje pouze tehdy, je-li v příchozí odpovědi SAML přítomno.
  • OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED a OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED
    • Pokud jsou nastaveny na true (výchozí), Overleaf očekává, že tvrzení SAML, respektive celá ověřovací odpověď SAML, budou podepsány IdP. Pokud jsou obě volby false, musí být podepsáno alespoň jedno z tvrzení nebo odpověď.
  • OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS
    • Určuje dobu platnosti, po jejímž uplynutí ID požadavku vygenerované pro požadavek SAML již nebude platné, pokud se objeví v odpovědi SAML v poli InResponseTo. Výchozí: 28800000 (8 hodin).
  • OVERLEAF_SAML_LOGOUT_URL
    • základní adresa, která se volá s požadavky na odhlášení (výchozí: entryPoint).
      • Příklad: https://idp.example.com/simplesaml/saml2/idp/SingleLogoutService.php
  • OVERLEAF_SAML_ADDITIONAL_LOGOUT_PARAMS
    • Slovník JSON s dalšími parametry dotazu, které se přidají k požadavkům ‘logout’.
  • OVERLEAF_SAML_IS_ADMIN_FIELD a OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE
    • Pokud jsou nastaveny obě proměnné prostředí, proces přihlášení nastaví user.isAdmin = true, pokud profil vrácený SAML IdP obsahuje atribut určený proměnnou OVERLEAF_SAML_IS_ADMIN_FIELD a jeho hodnota buď odpovídá OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE, nebo je to pole obsahující OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE; v opačném případě se user.isAdmin nastaví na false. Pokud některá z těchto proměnných není nastavena, stav administrátora se nastaví na true pouze při vytváření administrátorského uživatele v Launchpadu.
Metadata pro poskytovatele identity Aktuální verze Overleaf CE obsahuje endpoint pro získání metadat poskytovatele služby: http://my-overleaf-instance.com/saml/meta Poskytovatel identity musí být nakonfigurován tak, aby rozpoznal server Overleaf jako „poskytovatele služby“ (Service Provider). Pokyny, jak to provést, najdete v dokumentaci svého serveru SAML. Níže je příklad vhodných metadat poskytovatele služby:
Poznamenejte si certifikáty, AssertionConsumerService.Location, SingleLogoutService.Location a EntityDescriptor.entityID a odpovídajícím způsobem je nastavte v konfiguraci svého IdP, nebo soubor metadat pošlete administrátorovi IdP.

Postup krok za krokem: goauthentik

Tento návod popisuje nastavení otestované s goauthentik. Nahraďte https://overleaf.example.com svou hodnotou OVERLEAF_SITE_URL a https://authentik.example.com adresou svého Authentiku.
1

Vytvořte poskytovatele a aplikaci

V Authentiku otevřete Applications > Applications a klikněte na New Application. Průvodce vytvoří aplikaci a jejího poskytovatele najednou.1. Zadejte název a slug aplikace, například overleaf, a klikněte na Next:

Authentik: název a slug aplikace

2. Zvolte SAML Provider a klikněte na Next:

Authentik: výběr poskytovatele SAML

3. Vyplňte poskytovatele:
  • Authorization Flow: default-provider-authorization-implicit-consent
  • ACS URL: https://overleaf.example.com/saml/login/callback
  • Audience: název pro Overleaf, například overleaf. Overleaf jej odesílá jako OVERLEAF_SAML_ISSUER.

Authentik: poskytovatel SAML aplikace

4. Otevřete Advanced protocol settings a nastavte:
  • Signing Certificate: certifikát, například authentik Self-signed Certificate
  • Sign assertions a Sign responses: obojí zapnuto
  • Service Provider Binding: Post

Authentik: podepisování a binding otestovaného poskytovatele (testovací instance)

5. Klikejte na Next až na poslední stránku a aplikaci odešlete.
2

Zkopírujte hodnoty ze stránky poskytovatele

Znovu otevřete poskytovatele. Vše, co Overleaf potřebuje, najdete v jeho přehledu:

Authentik: přehled poskytovatele SAML (testovací instance)

EntityID/Issuer v části SAML Configuration je název samotného Authentiku. Nevkládejte jej do OVERLEAF_SAML_ISSUER, použijte Audience.
3

Nainstalujte podpisový certifikát

Klikněte na Download pod Download signing certificate a uložte soubor jako data/overleaf/certs/idp_cert.pem v adresáři Toolkitu. Kontejner jej vidí jako /var/lib/overleaf/certs/idp_cert.pem:
4

Namapujte atributy

Authentik posílá své atributy pod těmito názvy:
Skupiny přicházejí jako http://schemas.xmlsoap.org/claims/Group, tedy seznam. Chcete-li, aby se členové skupiny Authentiku Admins stali administrátory Overleafu:
Příznak administrátora se aktualizuje při každém přihlášení přes SAML. Při chybném poli nebo hodnotě přijde každý administrátor, který se přihlásí přes SAML, o administrátorská práva. Mapování nejprve otestujte s druhým administrátorským účtem.
variables.env
Naposledy změněno 6. října 2026