Skip to main content
Den här funktionen har utvecklats av yu-i-i/overleaf-cep. Här tillhandahåller vi viss dokumentation för din konfiguration.

Konfiguration

Internt använder Overleafs SAML-modul biblioteket passport-saml, och de flesta av följande konfigurationsalternativ skickas vidare till passport-saml. Om du har problem med att konfigurera SAML är det värt att läsa README-filen för passport-saml för att få en känsla för vilken konfiguration den förväntar sig. Miljövariabeln EXTERNAL_AUTH krävs för att aktivera SAML-autentiseringsmodulen. Den här miljövariabeln anger vilka externa autentiseringsmetoder som aktiveras. Variabelns värde är en lista. Om listan innehåller saml aktiveras SAML-autentisering. Till exempel: EXTERNAL_AUTH=ldap saml När SAML-autentiseringsmetoden används omdirigeras användaren till identitetsleverantörens (IdP) autentiseringssida. Om IdP:n autentiserar användaren kontrolleras Overleafs användardatabas efter en post som innehåller ett samlIdentifiers-fält med följande struktur:
externalUserId måste matcha värdet på den egenskap som anges av userIdAttribute i användarprofilen som returneras av IdP-servern. Om ingen matchande post hittas söks databasen igenom efter en användare vars primära e-postadress matchar e-postadressen i IdP:ns användarprofil:
  • Om en sådan användare hittas tas fältet hashedPassword bort för att inaktivera lokal autentisering, och fältet samlIdentifiers läggs till.
  • Om ingen matchande användare hittas skapas en ny användare med e-postadressen och samlIdentifiers från IdP-profilen.
Obs: För närvarande stöds endast en SAML-IdP. Fältet providerId i samlIdentifiers är låst till '1'.

Miljövariabler

  • OVERLEAF_SAML_IDENTITY_SERVICE_NAME
    • Visningsnamn för identitetstjänsten, som används på inloggningssidan (standard: Log in with SAML IdP).
  • OVERLEAF_SAML_USER_ID_FIELD
    • Värdet på det här attributet används av Overleaf som externt användar-ID, standardvärdet är nameID.
  • OVERLEAF_SAML_EMAIL_FIELD
    • Namnet på e-postfältet i användarprofilen, standardvärdet är nameID.
  • OVERLEAF_SAML_FIRST_NAME_FIELD
    • Namnet på firstName-fältet i användarprofilen, standardvärdet är givenName.
  • OVERLEAF_SAML_LAST_NAME_FIELD
    • Namnet på lastName-fältet i användarprofilen, standardvärdet är lastName
  • OVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN
    • Om den sätts till true uppdateras användarens fält first_name och last_name vid inloggning, och formuläret för användaruppgifter på sidan /user/settings stängs av.
  • OVERLEAF_SAML_ENTRYPOINT (obligatorisk)
    • Ingångs-URL för SAML-identitetstjänsten.
      • Exempel: https://idp.example.com/simplesaml/saml2/idp/SSOService.php
      • Exempel för Azure: https://login.microsoftonline.com/8b26b46a-6dd3-45c7-a104-f883f4db1f6b/saml2
  • OVERLEAF_SAML_ISSUER (obligatorisk)
    • Utfärdarens namn (Issuer).
  • OVERLEAF_SAML_AUDIENCE
    • Förväntad Audience i SAML-svaret, standardvärdet är värdet av OVERLEAF_SAML_ISSUER.
  • OVERLEAF_SAML_IDP_CERT (obligatorisk)
    • Sökväg till en fil som innehåller identitetsleverantörens publika certifikat, som används för att validera signaturerna på inkommande SAML-svar. Om identitetsleverantören har flera giltiga signeringscertifikat kan värdet vara en JSON-array med sökvägar till certifikaten.
      • Exempel (ett certifikat): /var/lib/overleaf/certs/idp_cert.pem
      • Exempel (flera certifikat): ["var/lib/overleaf/certs/idp_cert.pem", "/var/lib/overleaf/certs/idp_cert_old.pem"]
  • OVERLEAF_SAML_PUBLIC_CERT
    • Sökväg till en fil som innehåller det publika signeringscertifikat som bäddas in i autentiseringsförfrågningar så att IdP:n kan validera signaturerna på den inkommande SAML-förfrågan. Den krävs när metadata-endpointen konfigureras och strategin är konfigurerad med en OVERLEAF_SAML_PRIVATE_KEY. En JSON-array med sökvägar till certifikat kan anges för att stödja certifikatrotation. När en array med certifikat anges ska den första posten i arrayen matcha den aktuella OVERLEAF_SAML_PRIVATE_KEY. Ytterligare poster i arrayen kan användas för att publicera kommande certifikat till IdP:er innan OVERLEAF_SAML_PRIVATE_KEY ändras.
  • OVERLEAF_SAML_PRIVATE_KEY
    • Sökväg till en fil som innehåller en PEM-formaterad privat nyckel som matchar OVERLEAF_SAML_PUBLIC_CERT och som används för att signera autentiseringsförfrågningar som skickas av passport-saml.
  • OVERLEAF_SAML_DECRYPTION_CERT
    • Sökväg till en fil som innehåller ett publikt certifikat, som används för metadata-endpointen.
  • OVERLEAF_SAML_DECRYPTION_PVK
    • Sökväg till en fil som innehåller en privat nyckel som matchar OVERLEAF_SAML_DECRYPTION_CERT och som används för att försöka dekryptera eventuella krypterade intyg (assertions) som tas emot.
  • OVERLEAF_SAML_SIGNATURE_ALGORITHM
    • Anger valfritt signaturalgoritmen för signering av förfrågningar; giltiga värden är ‘sha1’ (standard), ‘sha256’ (rekommenderas), ‘sha512’ (säkrast, kontrollera att din IdP stöder det).
  • OVERLEAF_SAML_ADDITIONAL_PARAMS
    • JSON-ordbok med ytterligare frågeparametrar som läggs till i alla förfrågningar.
  • OVERLEAF_SAML_ADDITIONAL_AUTHORIZE_PARAMS
    • JSON-ordbok med ytterligare frågeparametrar som läggs till i ‘authorize’-förfrågningar.
      • Exempel: {"some_key": "some_value"}
  • OVERLEAF_SAML_IDENTIFIER_FORMAT
    • Format för namnidentifierare som begärs från identitetsleverantören (standard: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress). Om du använder urn:oasis:names:tc:SAML:2.0:nameid-format:persistent måste du se till att miljövariabeln OVERLEAF_SAML_EMAIL_FIELD är definierad. Om urn:oasis:names:tc:SAML:2.0:nameid-format:transient krävs måste du också definiera miljövariabeln OVERLEAF_SAML_USER_ID_FIELD, som till exempel kan sättas till användarens e-postadress.
  • OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MS
    • Tillåten tidsavvikelse i millisekunder mellan klient och server vid kontroll av giltighetstidsstämplarna i intygsvillkoren OnBefore och NotOnOrAfter. Om värdet sätts till -1 inaktiveras kontrollen av dessa villkor helt. Standardvärdet är 0.
  • OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEX
    • Attributet AttributeConsumingServiceIndex som läggs till i AuthnRequest för att instruera IdP:n vilken attributuppsättning som ska bifogas svaret (länk).
  • OVERLEAF_SAML_AUTHN_CONTEXT
    • JSON-array med värden för namnidentifierarformat för att begära autentiseringskontext. Standard: ["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"].
  • OVERLEAF_SAML_FORCE_AUTHN
    • Om true anger den initiala SAML-förfrågan från tjänsteleverantören att IdP:n ska tvinga fram en ny autentisering av användaren, även om hen har en giltig session.
  • OVERLEAF_SAML_DISABLE_REQUESTED_AUTHN_CONTEXT
    • Om true begärs ingen specifik autentiseringskontext. Du kan till exempel sätta detta till true för att tillåta ytterligare kontexter, såsom lösenordslösa inloggningar (urn:oasis:names:tc:SAML:2.0:ac:classes:X509). Stödet för ytterligare kontexter beror på din IdP.
  • OVERLEAF_SAML_AUTHN_REQUEST_BINDING
    • Om den sätts till HTTP-POST begärs autentisering från IdP:n via HTTP POST-bindning; annars används HTTP-Redirect som standard.
  • OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO
    • Om always valideras InResponseTo i inkommande SAML-svar.
    • Om never valideras InResponseTo inte (standard).
    • Om ifPresent valideras InResponseTo endast om det finns i det inkommande SAML-svaret.
  • OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED och OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED
    • När de är satta till true (standard) förväntar sig Overleaf att SAML-intygen, respektive hela SAML-autentiseringssvaret, är signerade av IdP:n. När båda alternativen är false måste åtminstone antingen intygen eller svaret vara signerade.
  • OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS
    • Anger efter hur lång tid ett förfrågnings-ID som genererats för en SAML-förfrågan inte längre är giltigt om det förekommer i fältet InResponseTo i ett SAML-svar. Standard: 28800000 (8 timmar).
  • OVERLEAF_SAML_LOGOUT_URL
    • basadress som anropas med utloggningsförfrågningar (standard: entryPoint).
      • Exempel: https://idp.example.com/simplesaml/saml2/idp/SingleLogoutService.php
  • OVERLEAF_SAML_ADDITIONAL_LOGOUT_PARAMS
    • JSON-ordbok med ytterligare frågeparametrar som läggs till i ‘logout’-förfrågningar.
  • OVERLEAF_SAML_IS_ADMIN_FIELD och OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE
    • När båda miljövariablerna är satta uppdaterar inloggningsprocessen user.isAdmin = true om profilen som returneras av SAML-IdP:n innehåller attributet som anges av OVERLEAF_SAML_IS_ADMIN_FIELD och dess värde antingen matchar OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE eller är en array som innehåller OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE; annars sätts user.isAdmin till false. Om någon av dessa variabler inte är satt sätts administratörsstatusen till true endast när administratörsanvändaren skapas i Launchpad.
Metadata för identitetsleverantören Den aktuella versionen av Overleaf CE innehåller en endpoint för att hämta metadata för tjänsteleverantören: http://my-overleaf-instance.com/saml/meta Identitetsleverantören måste konfigureras så att den känner igen Overleaf-servern som en ”Service Provider” (tjänsteleverantör). Se dokumentationen för din SAML-server för instruktioner om hur du gör detta. Nedan följer ett exempel på lämplig metadata för tjänsteleverantören:
Notera certifikaten, AssertionConsumerService.Location, SingleLogoutService.Location och EntityDescriptor.entityID och ange dem på lämpligt sätt i din IdP-konfiguration, eller skicka metadatafilen till IdP-administratören.

Steg för steg: goauthentik

Här går vi igenom en konfiguration som har testats mot goauthentik. Ersätt https://overleaf.example.com med din OVERLEAF_SITE_URL och https://authentik.example.com med adressen till din Authentik.
1

Skapa leverantören och applikationen

Öppna Applications > Applications i Authentik och klicka på New Application. Guiden skapar applikationen och dess leverantör samtidigt.1. Ge applikationen ett namn och en slug, till exempel overleaf, och klicka på Next:

Authentik: applikationens namn och slug

2. Välj SAML Provider och klicka på Next:

Authentik: välj SAML-leverantören

3. Fyll i leverantören:
  • Authorization Flow: default-provider-authorization-implicit-consent
  • ACS URL: https://overleaf.example.com/saml/login/callback
  • Audience: ett namn för Overleaf, till exempel overleaf. Overleaf skickar det som OVERLEAF_SAML_ISSUER.

Authentik: applikationens SAML-leverantör

4. Öppna Advanced protocol settings och ange:
  • Signing Certificate: ett certifikat, till exempel authentik Self-signed Certificate
  • Sign assertions och Sign responses: båda aktiverade
  • Service Provider Binding: Post

Authentik: signering och bindning för en testad leverantör (testinstans)

5. Klicka på Next fram till sista sidan och skicka in applikationen.
2

Kopiera värdena från leverantörssidan

Öppna leverantören igen. Allt som Overleaf behöver finns i dess översikt:

Authentik: översikt över en SAML-leverantör (testinstans)

EntityID/Issuer under SAML Configuration är namnet på Authentik självt. Ange det inte i OVERLEAF_SAML_ISSUER, utan använd Audience.
3

Installera signeringscertifikatet

Klicka på Download under Download signing certificate och spara filen som data/overleaf/certs/idp_cert.pem i din Toolkit-katalog. Containern ser den som /var/lib/overleaf/certs/idp_cert.pem:
4

Mappa attributen

Authentik skickar sina attribut under dessa namn:
Grupperna skickas som http://schemas.xmlsoap.org/claims/Group, en lista. Så här gör du medlemmarna i Authentik-gruppen Admins till administratörer i Overleaf:
Administratörsflaggan uppdateras vid varje SAML-inloggning. Med fel fält eller värde förlorar varje administratör som loggar in via SAML sina administratörsrättigheter. Testa mappningen med ett andra administratörskonto först.
variables.env
Senast ändrad 6 oktober 2026