Skip to main content
Questa funzionalità è sviluppata da yu-i-i/overleaf-cep. Qui ti offriamo della documentazione per la configurazione.

Configurazione

Internamente, il modulo SAML di Overleaf utilizza la libreria passport-saml e la maggior parte delle seguenti opzioni di configurazione viene passata a passport-saml. Se riscontri problemi nella configurazione di SAML, vale la pena leggere il README di passport-saml per farti un’idea della configurazione che si aspetta. La variabile d’ambiente EXTERNAL_AUTH è necessaria per abilitare il modulo di autenticazione SAML. Questa variabile d’ambiente specifica quali metodi di autenticazione esterna sono attivati. Il valore di questa variabile è un elenco. Se l’elenco include saml, l’autenticazione SAML verrà attivata. Ad esempio: EXTERNAL_AUTH=ldap saml Quando si utilizza il metodo di autenticazione SAML, l’utente viene reindirizzato al sito di autenticazione dell’Identity Provider (IdP). Se l’IdP autentica correttamente l’utente, nel database degli utenti di Overleaf viene cercato un record contenente un campo samlIdentifiers strutturato come segue:
externalUserId deve corrispondere al valore della proprietà specificata da userIdAttribute nel profilo utente restituito dal server IdP. Se non viene trovato alcun record corrispondente, nel database viene cercato un utente il cui indirizzo email principale corrisponda all’email presente nel profilo utente dell’IdP:
  • Se viene trovato un utente di questo tipo, il campo hashedPassword viene eliminato per disabilitare l’autenticazione locale e viene aggiunto il campo samlIdentifiers.
  • Se non viene trovato alcun utente corrispondente, viene creato un nuovo utente con l’indirizzo email e i samlIdentifiers del profilo IdP.
Nota: attualmente è supportato un solo IdP SAML. Il campo providerId in samlIdentifiers è fisso a '1'.

Variabili d’ambiente

  • OVERLEAF_SAML_IDENTITY_SERVICE_NAME
    • Nome visualizzato del servizio di identità, utilizzato nella pagina di accesso (predefinito: Log in with SAML IdP).
  • OVERLEAF_SAML_USER_ID_FIELD
    • Il valore di questo attributo verrà utilizzato da Overleaf come ID utente esterno; predefinito nameID.
  • OVERLEAF_SAML_EMAIL_FIELD
    • Nome del campo Email nel profilo utente; predefinito nameID.
  • OVERLEAF_SAML_FIRST_NAME_FIELD
    • Nome del campo firstName nel profilo utente; predefinito givenName.
  • OVERLEAF_SAML_LAST_NAME_FIELD
    • Nome del campo lastName nel profilo utente; predefinito lastName
  • OVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN
    • Se impostata su true, aggiorna i campi first_name e last_name dell’utente all’accesso e disattiva il modulo dei dati utente nella pagina /user/settings.
  • OVERLEAF_SAML_ENTRYPOINT (obbligatoria)
    • URL dell’entrypoint del servizio di identità SAML.
      • Esempio: https://idp.example.com/simplesaml/saml2/idp/SSOService.php
      • Esempio Azure: https://login.microsoftonline.com/8b26b46a-6dd3-45c7-a104-f883f4db1f6b/saml2
  • OVERLEAF_SAML_ISSUER (obbligatoria)
    • Il nome dell’Issuer.
  • OVERLEAF_SAML_AUDIENCE
    • Audience attesa nella risposta SAML; predefinito il valore di OVERLEAF_SAML_ISSUER.
  • OVERLEAF_SAML_IDP_CERT (obbligatoria)
    • Percorso di un file contenente il certificato pubblico dell’Identity Provider, utilizzato per convalidare le firme delle risposte SAML in arrivo. Se l’Identity Provider ha più certificati di firma validi, può essere un array JSON di percorsi ai certificati.
      • Esempio (un certificato): /var/lib/overleaf/certs/idp_cert.pem
      • Esempio (più certificati): ["var/lib/overleaf/certs/idp_cert.pem", "/var/lib/overleaf/certs/idp_cert_old.pem"]
  • OVERLEAF_SAML_PUBLIC_CERT
    • Percorso di un file contenente il certificato pubblico di firma da incorporare nelle richieste di autenticazione, affinché l’IdP possa convalidare le firme della richiesta SAML in arrivo. È necessario quando si configura l’endpoint dei metadati se la strategia è configurata con un OVERLEAF_SAML_PRIVATE_KEY. È possibile fornire un array JSON di percorsi ai certificati per supportare la rotazione dei certificati. Quando si fornisce un array di certificati, la prima voce dell’array deve corrispondere all’attuale OVERLEAF_SAML_PRIVATE_KEY. Le voci aggiuntive dell’array possono essere utilizzate per pubblicare agli IdP i certificati futuri prima di modificare OVERLEAF_SAML_PRIVATE_KEY.
  • OVERLEAF_SAML_PRIVATE_KEY
    • Percorso di un file contenente una chiave privata in formato PEM corrispondente a OVERLEAF_SAML_PUBLIC_CERT, utilizzata per firmare le richieste di autenticazione inviate da passport-saml.
  • OVERLEAF_SAML_DECRYPTION_CERT
  • OVERLEAF_SAML_DECRYPTION_PVK
    • Percorso di un file contenente la chiave privata corrispondente a OVERLEAF_SAML_DECRYPTION_CERT, che verrà utilizzata per tentare di decifrare eventuali asserzioni cifrate ricevute.
  • OVERLEAF_SAML_SIGNATURE_ALGORITHM
    • Imposta facoltativamente l’algoritmo di firma per le richieste; i valori validi sono ‘sha1’ (predefinito), ‘sha256’ (consigliato), ‘sha512’ (il più sicuro, verifica che il tuo IdP lo supporti).
  • OVERLEAF_SAML_ADDITIONAL_PARAMS
    • Dizionario JSON di parametri di query aggiuntivi da aggiungere a tutte le richieste.
  • OVERLEAF_SAML_ADDITIONAL_AUTHORIZE_PARAMS
    • Dizionario JSON di parametri di query aggiuntivi da aggiungere alle richieste ‘authorize’.
      • Esempio: {"some_key": "some_value"}
  • OVERLEAF_SAML_IDENTIFIER_FORMAT
    • Formato dell’identificatore di nome da richiedere all’identity provider (predefinito: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress). Se utilizzi urn:oasis:names:tc:SAML:2.0:nameid-format:persistent, assicurati che la variabile d’ambiente OVERLEAF_SAML_EMAIL_FIELD sia definita. Se è richiesto urn:oasis:names:tc:SAML:2.0:nameid-format:transient, devi definire anche la variabile d’ambiente OVERLEAF_SAML_USER_ID_FIELD, che può ad esempio essere impostata sull’indirizzo email dell’utente.
  • OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MS
    • Scostamento di orario accettabile, in millisecondi, tra client e server durante la verifica dei timestamp di validità delle condizioni delle asserzioni OnBefore e NotOnOrAfter. Impostandolo a -1 la verifica di queste condizioni viene disabilitata completamente. Il valore predefinito è 0.
  • OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEX
    • Attributo AttributeConsumingServiceIndex da aggiungere all’AuthnRequest per indicare all’IdP quale insieme di attributi allegare alla risposta (link).
  • OVERLEAF_SAML_AUTHN_CONTEXT
    • Array JSON di valori di formato dell’identificatore di nome per richiedere il contesto di autenticazione. Predefinito: ["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"].
  • OVERLEAF_SAML_FORCE_AUTHN
    • Se true, la richiesta SAML iniziale del service provider specifica che l’IdP deve forzare una nuova autenticazione dell’utente, anche se questi possiede una sessione valida.
  • OVERLEAF_SAML_DISABLE_REQUESTED_AUTHN_CONTEXT
    • Se true, non richiede un contesto di autenticazione specifico. Ad esempio, puoi impostarla su true per consentire contesti aggiuntivi come gli accessi senza password (urn:oasis:names:tc:SAML:2.0:ac:classes:X509). Il supporto per contesti aggiuntivi dipende dal tuo IdP.
  • OVERLEAF_SAML_AUTHN_REQUEST_BINDING
    • Se impostata su HTTP-POST, richiede l’autenticazione all’IdP tramite binding HTTP POST; altrimenti il valore predefinito è HTTP-Redirect.
  • OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO
    • Se always, InResponseTo verrà convalidato nelle risposte SAML in arrivo.
    • Se never, InResponseTo non verrà convalidato (predefinito).
    • Se ifPresent, InResponseTo verrà convalidato solo se presente nella risposta SAML in arrivo.
  • OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED e OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED
    • Se impostate su true (predefinito), Overleaf si aspetta che le asserzioni SAML, rispettivamente l’intera risposta di autenticazione SAML, siano firmate dall’IdP. Quando entrambe le opzioni sono false, almeno una tra le asserzioni o la risposta deve essere firmata.
  • OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS
    • Definisce il tempo di scadenza dopo il quale un Request ID generato per una richiesta SAML non sarà più valido se trovato nel campo InResponseTo di una risposta SAML. Predefinito: 28800000 (8 ore).
  • OVERLEAF_SAML_LOGOUT_URL
    • Indirizzo di base da chiamare con le richieste di logout (predefinito: entryPoint).
      • Esempio: https://idp.example.com/simplesaml/saml2/idp/SingleLogoutService.php
  • OVERLEAF_SAML_ADDITIONAL_LOGOUT_PARAMS
    • Dizionario JSON di parametri di query aggiuntivi da aggiungere alle richieste ‘logout’.
  • OVERLEAF_SAML_IS_ADMIN_FIELD e OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE
    • Quando entrambe le variabili d’ambiente sono impostate, il processo di accesso imposta user.isAdmin = true se il profilo restituito dall’IdP SAML contiene l’attributo specificato da OVERLEAF_SAML_IS_ADMIN_FIELD e il suo valore corrisponde a OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE oppure è un array contenente OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE; altrimenti user.isAdmin viene impostato su false. Se una delle due variabili non è impostata, lo stato di amministratore viene impostato su true solo durante la creazione dell’utente amministratore in Launchpad.
Metadati per l’Identity Provider La versione attuale di Overleaf CE include un endpoint per recuperare i metadati del Service Provider: http://my-overleaf-instance.com/saml/meta L’Identity Provider dovrà essere configurato per riconoscere il server Overleaf come “Service Provider”. Consulta la documentazione del tuo server SAML per le istruzioni su come farlo. Di seguito è riportato un esempio di metadati del Service Provider appropriati:
Annota i certificati, AssertionConsumerService.Location, SingleLogoutService.Location e EntityDescriptor.entityID e impostali in modo appropriato nella configurazione del tuo IdP, oppure invia il file dei metadati all’amministratore dell’IdP.

Passo dopo passo: goauthentik

Questa guida illustra una configurazione testata con goauthentik. Sostituisci https://overleaf.example.com con il tuo OVERLEAF_SITE_URL e https://authentik.example.com con l’indirizzo della tua istanza Authentik.
1

Crea il provider e l'applicazione

In Authentik, apri Applications > Applications e fai clic su New Application. La procedura guidata crea insieme l’applicazione e il relativo provider.1. Assegna all’applicazione un nome e uno slug, ad esempio overleaf, e fai clic su Next:

Authentik: nome e slug dell'applicazione

2. Scegli SAML Provider e fai clic su Next:

Authentik: scegli il provider SAML

3. Compila il provider:
  • Authorization Flow: default-provider-authorization-implicit-consent
  • ACS URL: https://overleaf.example.com/saml/login/callback
  • Audience: un nome per Overleaf, ad esempio overleaf. Overleaf lo invia come OVERLEAF_SAML_ISSUER.

Authentik: il provider SAML dell'applicazione

4. Apri Advanced protocol settings e imposta:
  • Signing Certificate: un certificato, ad esempio authentik Self-signed Certificate
  • Sign assertions e Sign responses: entrambi attivi
  • Service Provider Binding: Post

Authentik: firma e binding di un provider testato (istanza di test)

5. Fai clic su Next fino all’ultima pagina e invia l’applicazione.
2

Copia i valori dalla pagina del provider

Apri di nuovo il provider. Tutto ciò che serve a Overleaf si trova nella sua panoramica:

Authentik: panoramica di un provider SAML (istanza di test)

EntityID/Issuer sotto SAML Configuration è il nome di Authentik stesso. Non inserirlo in OVERLEAF_SAML_ISSUER: usa l’Audience.
3

Installa il certificato di firma

Fai clic su Download sotto Download signing certificate e salva il file come data/overleaf/certs/idp_cert.pem nella directory del Toolkit. Il container lo vede come /var/lib/overleaf/certs/idp_cert.pem:
4

Mappa gli attributi

Authentik invia i propri attributi con questi nomi:
I gruppi arrivano come http://schemas.xmlsoap.org/claims/Group, un elenco. Per rendere amministratori di Overleaf i membri del gruppo Authentik Admins:
Il flag di amministratore viene aggiornato a ogni accesso SAML. Con un campo o un valore errato, ogni amministratore che accede tramite SAML perde i diritti di amministratore. Prova prima la mappatura con un secondo account amministratore.
variables.env
Ultima modifica il 6 ottobre 2026