> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Autenticazione SAML

<Info>
  Questa funzionalità è sviluppata da [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep). Qui ti offriamo della documentazione per la configurazione.
</Info>

### Configurazione

Internamente, il modulo SAML di Overleaf utilizza la libreria [passport-saml](https://github.com/node-saml/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:

```json theme={null}
samlIdentifiers: [
  {
    externalUserId: "...",
    providerId: "1",
    userIdAttribute: "..."
  }
]
```

`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.

<strong>Nota:</strong> 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` <strong>(obbligatoria)</strong>
  * 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` <strong>(obbligatoria)</strong>
  * Il nome dell'Issuer.
* `OVERLEAF_SAML_AUDIENCE`
  * Audience attesa nella risposta SAML; predefinito il valore di `OVERLEAF_SAML_ISSUER`.
* `OVERLEAF_SAML_IDP_CERT` <strong>(obbligatoria)</strong>
  * 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](https://github.com/yu-i-i/overleaf-cep/wiki/Extended-CE:-SAML-Authentication#metadata-for-the-identity-provider) 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`
  * Percorso di un file contenente il certificato pubblico, utilizzato per l'[endpoint dei metadati](https://github.com/yu-i-i/overleaf-cep/wiki/Extended-CE:-SAML-Authentication#metadata-for-the-identity-provider).
* `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](http://blog.aniljohn.com/2014/01/data-minimization-front-channel-saml-attribute-requests.html)).
* `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:

<Accordion title="ol-meta.xml">
  ```text theme={null}
  <?xml version="1.0"?>
  <EntityDescriptor xmlns="urn:oasis:names:tc:SAML:2.0:metadata"
                    xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
                    entityID="MyOverleaf"
                    ID="_b508c83b7dda452f5b269383fb391107116f8f57">
    <SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol" AuthnRequestsSigned="true" WantAssertionsSigned="true">
      <KeyDescriptor use="signing">
        <ds:KeyInfo>
          <ds:X509Data>
            <ds:X509Certificate>MII...
  [skipped]
  </ds:X509Certificate>
          </ds:X509Data>
        </ds:KeyInfo>
      </KeyDescriptor>
      <KeyDescriptor use="encryption">
        <ds:KeyInfo>
          <ds:X509Data>
            <ds:X509Certificate>MII...
  [skipped]
  </ds:X509Certificate>
          </ds:X509Data>
        </ds:KeyInfo>
        <EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes256-gcm"/>
        <EncryptionMethod Algorithm="http://www.w3.org/2009/xmlenc11#aes128-gcm"/>
        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>
        <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/>
      </KeyDescriptor>
      <SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
                           Location="https://my-overleaf-instance.com/saml/logout/callback"/>
      <NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</NameIDFormat>
      <AssertionConsumerService index="1"
                                isDefault="true"
                                Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
                                Location="https://my-overleaf-instance.com/saml/login/callback"/>
    </SPSSODescriptor>
  </EntityDescriptor>

  ```
</Accordion>

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.

<Accordion title="File variables.env di esempio (minimo)">
  ```text theme={null}
  OVERLEAF_APP_NAME="Our Overleaf Instance"

  ENABLED_LINKED_FILE_TYPES=project_file,project_output_file,url

  # Enables Thumbnail generation using ImageMagick
  ENABLE_CONVERSIONS=true

  # Disables email confirmation requirement
  EMAIL_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=true

  OVERLEAF_SITE_URL=http://my-overleaf-instance.com
  OVERLEAF_NAV_TITLE=Our Overleaf Instance
  # OVERLEAF_HEADER_IMAGE_URL=http://somewhere.com/mylogo.png
  OVERLEAF_ADMIN_EMAIL=support@example.com

  OVERLEAF_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.com
  OVERLEAF_EMAIL_SMTP_HOST=smtp.example.com
  OVERLEAF_EMAIL_SMTP_PORT=587
  OVERLEAF_EMAIL_SMTP_SECURE=false
  # OVERLEAF_EMAIL_SMTP_USER=
  # OVERLEAF_EMAIL_SMTP_PASS=
  # OVERLEAF_EMAIL_SMTP_NAME=
  OVERLEAF_EMAIL_SMTP_LOGGER=false
  OVERLEAF_EMAIL_SMTP_TLS_REJECT_UNAUTH=true
  OVERLEAF_EMAIL_SMTP_IGNORE_TLS=false
  OVERLEAF_CUSTOM_EMAIL_FOOTER=This system is run by department x

  OVERLEAF_PROXY_LEARN=true
  NAV_HIDE_POWERED_BY=true

  #################
  ##     SAML    ##
  #################

  EXTERNAL_AUTH=saml
  OVERLEAF_SAML_ISSUER=MyOverleaf
  OVERLEAF_SAML_IDENTITY_SERVICE_NAME='Log in with SAML Provider'
  OVERLEAF_SAML_EMAIL_FIELD=Email
  OVERLEAF_SAML_FIRST_NAME_FIELD=DisplayName
  OVERLEAF_SAML_LAST_NAME_FIELD=DisplayName
  OVERLEAF_SAML_ENTRYPOINT=http://localhost:18000/login/saml/authorize/admin/SAML_Overleaf
  OVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pem
  OVERLEAF_SAML_SIGNATURE_ALGORITHM=
  ```
</Accordion>

## Passo dopo passo: goauthentik

Questa guida illustra una configurazione testata con [goauthentik](https://goauthentik.io/). Sostituisci `https://overleaf.example.com` con il tuo `OVERLEAF_SITE_URL` e `https://authentik.example.com` con l'indirizzo della tua istanza Authentik.

<Steps>
  <Step title="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**:

    <Frame caption="Authentik: nome e slug dell'applicazione">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/saml-authentik-app.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=e2405f63578ab00991ad5046665eab32" alt="" width="1120" height="810" data-path="images/on-premises/saml-authentik-app.png" />
    </Frame>

    2\. Scegli **SAML Provider** e fai clic su **Next**:

    <Frame caption="Authentik: scegli il provider SAML">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/saml-authentik-type.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=537780362698d5088132048754ac6481" alt="" width="1120" height="810" data-path="images/on-premises/saml-authentik-type.png" />
    </Frame>

    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`.

    <Frame caption="Authentik: il provider SAML dell'applicazione">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/saml-authentik-create.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=4f15b87b90b355e13831b95c07abe427" alt="" width="1120" height="810" data-path="images/on-premises/saml-authentik-create.png" />
    </Frame>

    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`

    <Frame caption="Authentik: firma e binding di un provider testato (istanza di test)">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/saml-authentik-advanced.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=39b136a219fb192ed42d337de0058166" alt="" width="1089" height="417" data-path="images/on-premises/saml-authentik-advanced.png" />
    </Frame>

    5\. Fai clic su **Next** fino all'ultima pagina e invia l'applicazione.
  </Step>

  <Step title="Copia i valori dalla pagina del provider">
    Apri di nuovo il provider. Tutto ciò che serve a Overleaf si trova nella sua panoramica:

    <Frame caption="Authentik: panoramica di un provider SAML (istanza di test)">
      <img src="https://mintcdn.com/ayakaleaf-pro/TjqwH4XzxYAkHStq/images/on-premises/saml-authentik-provider.png?fit=max&auto=format&n=TjqwH4XzxYAkHStq&q=85&s=b73f3aa817b7a18286db6d810ab3b2e9" alt="" width="990" height="963" data-path="images/on-premises/saml-authentik-provider.png" />
    </Frame>

    | Nella pagina del provider | Variabile d'ambiente |
    | - | - |
    | **SAML Endpoint** | `OVERLEAF_SAML_ENTRYPOINT` e `OVERLEAF_SAML_LOGOUT_URL` |
    | **Audience** | `OVERLEAF_SAML_ISSUER` |
    | **Download signing certificate** (un file) | `OVERLEAF_SAML_IDP_CERT`, vedi il passo successivo |

    <Warning>
      **EntityID/Issuer** sotto **SAML Configuration** è il nome di Authentik stesso. Non inserirlo in `OVERLEAF_SAML_ISSUER`: usa l'**Audience**.
    </Warning>
  </Step>

  <Step title="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`:

    ```dotenv theme={null}
    OVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pem
    ```
  </Step>

  <Step title="Mappa gli attributi">
    Authentik invia i propri attributi con questi nomi:

    ```dotenv theme={null}
    OVERLEAF_SAML_USER_ID_FIELD=http://schemas.goauthentik.io/2021/02/saml/username
    OVERLEAF_SAML_EMAIL_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
    OVERLEAF_SAML_FIRST_NAME_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
    OVERLEAF_SAML_LAST_NAME_FIELD=http://schemas.goauthentik.io/2021/02/saml/username
    ```

    I gruppi arrivano come `http://schemas.xmlsoap.org/claims/Group`, un elenco. Per rendere amministratori di Overleaf i membri del gruppo Authentik `Admins`:

    ```dotenv theme={null}
    OVERLEAF_SAML_IS_ADMIN_FIELD=http://schemas.xmlsoap.org/claims/Group
    OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE=Admins
    ```

    <Warning>
      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.
    </Warning>
  </Step>
</Steps>

<Accordion title="variables.env testato per goauthentik">
  ```dotenv title="variables.env" wrap theme={null}
  EXTERNAL_AUTH=saml
  OVERLEAF_SAML_IDENTITY_SERVICE_NAME=Log in with Authentik
  OVERLEAF_SAML_ENTRYPOINT=https://authentik.example.com/application/saml/overleaf/
  OVERLEAF_SAML_LOGOUT_URL=https://authentik.example.com/application/saml/overleaf/
  OVERLEAF_SAML_ISSUER=overleaf
  OVERLEAF_SAML_IDP_CERT=/var/lib/overleaf/certs/idp_cert.pem
  OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED=true
  OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED=true
  OVERLEAF_SAML_USER_ID_FIELD=http://schemas.goauthentik.io/2021/02/saml/username
  OVERLEAF_SAML_EMAIL_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
  OVERLEAF_SAML_FIRST_NAME_FIELD=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
  OVERLEAF_SAML_LAST_NAME_FIELD=http://schemas.goauthentik.io/2021/02/saml/username
  OVERLEAF_SAML_IS_ADMIN_FIELD=http://schemas.xmlsoap.org/claims/Group
  OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE=Admins
  OVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN=true
  ```
</Accordion>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.