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

# SAML-authenticatie

<Info>
  Deze functie is ontwikkeld door [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep). Hier bieden we wat documentatie voor je configuratie.
</Info>

### Configuratie

Intern gebruikt de SAML-module van Overleaf de bibliotheek [passport-saml](https://github.com/node-saml/passport-saml); de meeste van de volgende configuratieopties worden doorgegeven aan `passport-saml`. Als je problemen hebt met het configureren van SAML, is het de moeite waard om de README van `passport-saml` te lezen om een idee te krijgen van de configuratie die deze verwacht.

De omgevingsvariabele `EXTERNAL_AUTH` is vereist om de SAML-authenticatiemodule in te schakelen. Deze omgevingsvariabele geeft aan welke externe authenticatiemethoden worden geactiveerd. De waarde van deze variabele is een lijst. Als de lijst `saml` bevat, wordt SAML-authenticatie geactiveerd.

Bijvoorbeeld: `EXTERNAL_AUTH=ldap saml`

Bij gebruik van de SAML-authenticatiemethode wordt een gebruiker doorgestuurd naar de authenticatiesite van de Identity Provider (IdP). Als de IdP de gebruiker succesvol authenticeert, wordt in de gebruikersdatabase van Overleaf gezocht naar een record met een veld `samlIdentifiers` met de volgende structuur:

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

De `externalUserId` moet overeenkomen met de waarde van de eigenschap die door `userIdAttribute` is opgegeven in het gebruikersprofiel dat door de IdP-server wordt geretourneerd.

Als er geen overeenkomend record wordt gevonden, wordt in de database gezocht naar een gebruiker van wie het primaire e-mailadres overeenkomt met het e-mailadres in het gebruikersprofiel van de IdP:

* Als zo'n gebruiker wordt gevonden, wordt het veld `hashedPassword` verwijderd om lokale authenticatie uit te schakelen, en wordt het veld `samlIdentifiers` toegevoegd.
* Als er geen overeenkomende gebruiker wordt gevonden, wordt een nieuwe gebruiker aangemaakt met het e-mailadres en de `samlIdentifiers` uit het IdP-profiel.

<strong>Opmerking:</strong> Momenteel wordt slechts één SAML-IdP ondersteund. Het veld `providerId` in `samlIdentifiers` staat vast op `'1'`.

#### Omgevingsvariabelen

* `OVERLEAF_SAML_IDENTITY_SERVICE_NAME`
  * Weergavenaam voor de identiteitsdienst, gebruikt op de inlogpagina (standaard: `Log in with SAML IdP`).
* `OVERLEAF_SAML_USER_ID_FIELD`
  * De waarde van dit attribuut wordt door Overleaf gebruikt als het externe gebruikers-ID, standaard `nameID`.
* `OVERLEAF_SAML_EMAIL_FIELD`
  * Naam van het e-mailveld in het gebruikersprofiel, standaard `nameID`.
* `OVERLEAF_SAML_FIRST_NAME_FIELD`
  * Naam van het veld firstName in het gebruikersprofiel, standaard `givenName`.
* `OVERLEAF_SAML_LAST_NAME_FIELD`
  * Naam van het veld lastName in het gebruikersprofiel, standaard `lastName`
* `OVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN`
  * Als deze is ingesteld op `true`, worden de velden `first_name` en `last_name` van de gebruiker bij het inloggen bijgewerkt en wordt het formulier met gebruikersgegevens op de pagina `/user/settings` uitgeschakeld.
* `OVERLEAF_SAML_ENTRYPOINT` <strong>(verplicht)</strong>
  * Entrypoint-URL voor de SAML-identiteitsdienst.
    * Voorbeeld: `https://idp.example.com/simplesaml/saml2/idp/SSOService.php`
    * Azure-voorbeeld: `https://login.microsoftonline.com/8b26b46a-6dd3-45c7-a104-f883f4db1f6b/saml2`
* `OVERLEAF_SAML_ISSUER` <strong>(verplicht)</strong>
  * De naam van de issuer.
* `OVERLEAF_SAML_AUDIENCE`
  * Verwachte Audience van het SAML-antwoord, standaard de waarde van `OVERLEAF_SAML_ISSUER`.
* `OVERLEAF_SAML_IDP_CERT` <strong>(verplicht)</strong>
  * Pad naar een bestand met het openbare certificaat van de Identity Provider, gebruikt om de handtekeningen van binnenkomende SAML-antwoorden te valideren. Als de Identity Provider meerdere geldige ondertekeningscertificaten heeft, kan dit een JSON-array met paden naar de certificaten zijn.
    * Voorbeeld (één certificaat): `/var/lib/overleaf/certs/idp_cert.pem`
    * Voorbeeld (meerdere certificaten): `["var/lib/overleaf/certs/idp_cert.pem", "/var/lib/overleaf/certs/idp_cert_old.pem"]`
* `OVERLEAF_SAML_PUBLIC_CERT`
  * Pad naar een bestand met het openbare ondertekeningscertificaat dat in authenticatieverzoeken wordt opgenomen, zodat de IdP de handtekeningen van het binnenkomende SAML-verzoek kan valideren. Dit is vereist bij het inrichten van het [metadata-endpoint](https://github.com/yu-i-i/overleaf-cep/wiki/Extended-CE:-SAML-Authentication#metadata-for-the-identity-provider) wanneer de strategie is geconfigureerd met een `OVERLEAF_SAML_PRIVATE_KEY`. Er kan een JSON-array met paden naar certificaten worden opgegeven om certificaatrotatie te ondersteunen. Bij het opgeven van een array met certificaten moet het eerste item in de array overeenkomen met de huidige `OVERLEAF_SAML_PRIVATE_KEY`. Extra items in de array kunnen worden gebruikt om toekomstige certificaten bij IdP's te publiceren voordat de `OVERLEAF_SAML_PRIVATE_KEY` wordt gewijzigd.
* `OVERLEAF_SAML_PRIVATE_KEY`
  * Pad naar een bestand met een PEM-geformatteerde privésleutel die overeenkomt met het `OVERLEAF_SAML_PUBLIC_CERT`, gebruikt om authenticatieverzoeken te ondertekenen die door passport-saml worden verzonden.
* `OVERLEAF_SAML_DECRYPTION_CERT`
  * Pad naar een bestand met een openbaar certificaat, gebruikt voor het [metadata-endpoint](https://github.com/yu-i-i/overleaf-cep/wiki/Extended-CE:-SAML-Authentication#metadata-for-the-identity-provider).
* `OVERLEAF_SAML_DECRYPTION_PVK`
  * Pad naar een bestand met een privésleutel die overeenkomt met het `OVERLEAF_SAML_DECRYPTION_CERT` en die wordt gebruikt om te proberen ontvangen versleutelde assertions te ontsleutelen.
* `OVERLEAF_SAML_SIGNATURE_ALGORITHM`
  * Stel optioneel het handtekeningalgoritme in voor het ondertekenen van verzoeken; geldige waarden zijn 'sha1' (standaard), 'sha256' (aanbevolen) en 'sha512' (het veiligst; controleer of je IdP dit ondersteunt).
* `OVERLEAF_SAML_ADDITIONAL_PARAMS`
  * JSON-dictionary met extra queryparameters die aan alle verzoeken worden toegevoegd.
* `OVERLEAF_SAML_ADDITIONAL_AUTHORIZE_PARAMS`
  * JSON-dictionary met extra queryparameters die aan 'authorize'-verzoeken worden toegevoegd.
    * Voorbeeld: `{"some_key": "some_value"}`
* `OVERLEAF_SAML_IDENTIFIER_FORMAT`
  * Indeling van de naam-identificatie die bij de identity provider wordt aangevraagd (standaard: `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`). Als je `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent` gebruikt, zorg er dan voor dat de omgevingsvariabele `OVERLEAF_SAML_EMAIL_FIELD` is gedefinieerd. Als `urn:oasis:names:tc:SAML:2.0:nameid-format:transient` vereist is, moet je ook de omgevingsvariabele `OVERLEAF_SAML_USER_ID_FIELD` definiëren, die bijvoorbeeld kan worden ingesteld op het e-mailadres van de gebruiker.
* `OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MS`
  * Toegestane klokafwijking in milliseconden tussen client en server bij het controleren van de geldigheidstijdstempels OnBefore en NotOnOrAfter van assertion-voorwaarden. Met -1 wordt het controleren van deze voorwaarden volledig uitgeschakeld. Standaard is 0.
* `OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEX`
  * Attribuut `AttributeConsumingServiceIndex` dat aan het AuthnRequest wordt toegevoegd om de IdP te laten weten welke attributenset aan het antwoord moet worden toegevoegd ([link](http://blog.aniljohn.com/2014/01/data-minimization-front-channel-saml-attribute-requests.html)).
* `OVERLEAF_SAML_AUTHN_CONTEXT`
  * JSON-array met waarden voor de naam-identificatie-indeling om een authenticatiecontext aan te vragen. Standaard: `["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"]`.
* `OVERLEAF_SAML_FORCE_AUTHN`
  * Als deze `true` is, geeft het initiële SAML-verzoek van de serviceprovider aan dat de IdP de gebruiker opnieuw moet laten authenticeren, zelfs als deze een geldige sessie heeft.
* `OVERLEAF_SAML_DISABLE_REQUESTED_AUTHN_CONTEXT`
  * Als deze `true` is, wordt geen specifieke authenticatiecontext aangevraagd. Je kunt dit bijvoorbeeld op `true` zetten om extra contexten toe te staan, zoals inloggen zonder wachtwoord (`urn:oasis:names:tc:SAML:2.0:ac:classes:X509`). Ondersteuning voor extra contexten is afhankelijk van je IdP.
* `OVERLEAF_SAML_AUTHN_REQUEST_BINDING`
  * Als deze is ingesteld op `HTTP-POST`, wordt authenticatie bij de IdP aangevraagd via HTTP POST-binding; anders is de standaard HTTP-Redirect.
* `OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO`
  * Bij `always` wordt InResponseTo in binnenkomende SAML-antwoorden gevalideerd.
  * Bij `never` wordt InResponseTo niet gevalideerd (standaard).
  * Bij `ifPresent` wordt InResponseTo alleen gevalideerd als het in het binnenkomende SAML-antwoord aanwezig is.
* `OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED` en `OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED`
  * Wanneer deze zijn ingesteld op `true` (standaard), verwacht Overleaf dat respectievelijk de SAML-assertions of het volledige SAML-authenticatieantwoord door de IdP zijn ondertekend. Wanneer beide opties `false` zijn, moet ten minste een van de assertions of het antwoord zijn ondertekend.
* `OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS`
  * Bepaalt na hoeveel tijd een voor een SAML-verzoek gegenereerd Request ID niet meer geldig is wanneer het in het veld `InResponseTo` van een SAML-antwoord voorkomt. Standaard: 28800000 (8 uur).
* `OVERLEAF_SAML_LOGOUT_URL`
  * Basisadres dat met uitlogverzoeken wordt aangeroepen (standaard: `entryPoint`).
    * Voorbeeld: `https://idp.example.com/simplesaml/saml2/idp/SingleLogoutService.php`
* `OVERLEAF_SAML_ADDITIONAL_LOGOUT_PARAMS`
  * JSON-dictionary met extra queryparameters die aan 'logout'-verzoeken worden toegevoegd.
* `OVERLEAF_SAML_IS_ADMIN_FIELD` en `OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE`
  * Wanneer beide omgevingsvariabelen zijn ingesteld, stelt het inlogproces `user.isAdmin = true` in als het door de SAML-IdP geretourneerde profiel het attribuut bevat dat is opgegeven door `OVERLEAF_SAML_IS_ADMIN_FIELD` en de waarde ervan overeenkomt met `OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE` of een array is die `OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE` bevat; anders wordt `user.isAdmin` ingesteld op `false`. Als een van deze variabelen niet is ingesteld, wordt de beheerdersstatus alleen op `true` gezet tijdens het aanmaken van de beheerder in Launchpad.

**Metadata voor de Identity Provider**

De huidige versie van Overleaf CE bevat een endpoint om de metadata van de Service Provider op te halen: `http://my-overleaf-instance.com/saml/meta`

De Identity Provider moet zo worden geconfigureerd dat deze de Overleaf-server herkent als "Service Provider". Raadpleeg de documentatie van je SAML-server voor instructies om dit te doen.

Hieronder staat een voorbeeld van geschikte Service Provider-metadata:

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

Noteer de certificaten, `AssertionConsumerService.Location`, `SingleLogoutService.Location` en `EntityDescriptor.entityID` en stel deze naar behoren in je IdP-configuratie in, of stuur het metadatabestand naar de beheerder van de IdP.

<Accordion title="Voorbeeld van een variables.env-bestand (minimaal)">
  ```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>

## Stap voor stap: goauthentik

Hieronder doorlopen we een setup die is getest met [goauthentik](https://goauthentik.io/). Vervang `https://overleaf.example.com` door je `OVERLEAF_SITE_URL` en `https://authentik.example.com` door het adres van je Authentik.

<Steps>
  <Step title="Maak de provider en de applicatie aan">
    Open in Authentik **Applications > Applications** en klik op **New Application**. De wizard maakt de applicatie en de bijbehorende provider samen aan.

    1\. Geef de applicatie een naam en een slug, bijvoorbeeld `overleaf`, en klik op **Next**:

    <Frame caption="Authentik: naam en slug van de applicatie">
      <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\. Kies **SAML Provider** en klik op **Next**:

    <Frame caption="Authentik: de SAML-provider kiezen">
      <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\. Vul de provider in:

    * **Authorization Flow**: `default-provider-authorization-implicit-consent`
    * **ACS URL**: `https://overleaf.example.com/saml/login/callback`
    * **Audience**: een naam voor Overleaf, bijvoorbeeld `overleaf`. Overleaf verstuurt deze als `OVERLEAF_SAML_ISSUER`.

    <Frame caption="Authentik: de SAML-provider van de applicatie">
      <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\. Open **Advanced protocol settings** en stel in:

    * **Signing Certificate**: een certificaat, bijvoorbeeld `authentik Self-signed Certificate`
    * **Sign assertions** en **Sign responses**: beide aan
    * **Service Provider Binding**: `Post`

    <Frame caption="Authentik: ondertekening en binding van een geteste provider (testinstantie)">
      <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\. Klik op **Next** tot de laatste pagina en verstuur de applicatie.
  </Step>

  <Step title="Kopieer de waarden van de providerpagina">
    Open de provider opnieuw. Alles wat Overleaf nodig heeft, staat in het overzicht:

    <Frame caption="Authentik: overzicht van een SAML-provider (testinstantie)">
      <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>

    | Op de providerpagina | Omgevingsvariabele |
    | - | - |
    | **SAML Endpoint** | `OVERLEAF_SAML_ENTRYPOINT` en `OVERLEAF_SAML_LOGOUT_URL` |
    | **Audience** | `OVERLEAF_SAML_ISSUER` |
    | **Download signing certificate** (een bestand) | `OVERLEAF_SAML_IDP_CERT`, zie de volgende stap |

    <Warning>
      **EntityID/Issuer** onder **SAML Configuration** is de naam van Authentik zelf. Zet deze niet in `OVERLEAF_SAML_ISSUER`, maar gebruik de **Audience**.
    </Warning>
  </Step>

  <Step title="Installeer het ondertekeningscertificaat">
    Klik op **Download** onder **Download signing certificate** en sla het bestand op als `data/overleaf/certs/idp_cert.pem` in je Toolkit-map. De container ziet het als `/var/lib/overleaf/certs/idp_cert.pem`:

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

  <Step title="Koppel de attributen">
    Authentik verstuurt zijn attributen onder deze namen:

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

    De groepen komen binnen als `http://schemas.xmlsoap.org/claims/Group`, een lijst. Om de leden van de Authentik-groep `Admins` beheerder van Overleaf te maken:

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

    <Warning>
      De beheerdersvlag wordt bij elke SAML-aanmelding bijgewerkt. Met een verkeerd veld of een verkeerde waarde verliest elke beheerder die via SAML inlogt de beheerdersrechten. Test de koppeling eerst met een tweede beheerdersaccount.
    </Warning>
  </Step>
</Steps>

<Accordion title="Geteste variables.env voor 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.