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

# Autenticação SAML

<Info>
  Este recurso foi desenvolvido por [yu-i-i/overleaf-cep](https://github.com/yu-i-i/overleaf-cep). Aqui disponibilizamos alguns documentos para a sua configuração.
</Info>

### Configuração

Internamente, o módulo SAML do Overleaf usa a biblioteca [passport-saml](https://github.com/node-saml/passport-saml), e a maioria das opções de configuração a seguir é repassada ao `passport-saml`. Se você estiver tendo problemas para configurar o SAML, vale a pena ler o README do `passport-saml` para ter uma ideia da configuração que ele espera.

A variável de ambiente `EXTERNAL_AUTH` é necessária para ativar o módulo de autenticação SAML. Esta variável de ambiente especifica quais métodos de autenticação externa estão ativados. O valor desta variável é uma lista. Se a lista incluir `saml`, a autenticação SAML será ativada.

Por exemplo: `EXTERNAL_AUTH=ldap saml`

Ao usar o método de autenticação SAML, o usuário é redirecionado para o site de autenticação do provedor de identidade (IdP). Se o IdP autenticar o usuário com sucesso, o banco de dados de usuários do Overleaf é verificado em busca de um registro que contenha um campo `samlIdentifiers` estruturado da seguinte forma:

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

O `externalUserId` deve corresponder ao valor da propriedade especificada por `userIdAttribute` no perfil de usuário retornado pelo servidor do IdP.

Se nenhum registro correspondente for encontrado, o banco de dados é pesquisado em busca de um usuário cujo endereço de e-mail principal corresponda ao e-mail no perfil de usuário do IdP:

* Se esse usuário for encontrado, o campo `hashedPassword` é excluído para desativar a autenticação local, e o campo `samlIdentifiers` é adicionado.
* Se nenhum usuário correspondente for encontrado, um novo usuário é criado com o endereço de e-mail e os `samlIdentifiers` do perfil do IdP.

<strong>Observação:</strong> atualmente, apenas um IdP SAML é suportado. O campo `providerId` em `samlIdentifiers` é fixado em `'1'`.

#### Variáveis de ambiente

* `OVERLEAF_SAML_IDENTITY_SERVICE_NAME`
  * Nome de exibição do serviço de identidade, usado na página de login (padrão: `Log in with SAML IdP`).
* `OVERLEAF_SAML_USER_ID_FIELD`
  * O valor deste atributo será usado pelo Overleaf como ID de usuário externo; o padrão é `nameID`.
* `OVERLEAF_SAML_EMAIL_FIELD`
  * Nome do campo de e-mail no perfil do usuário; o padrão é `nameID`.
* `OVERLEAF_SAML_FIRST_NAME_FIELD`
  * Nome do campo firstName no perfil do usuário; o padrão é `givenName`.
* `OVERLEAF_SAML_LAST_NAME_FIELD`
  * Nome do campo lastName no perfil do usuário; o padrão é `lastName`
* `OVERLEAF_SAML_UPDATE_USER_DETAILS_ON_LOGIN`
  * Se definida como `true`, atualiza os campos `first_name` e `last_name` do usuário no login e desativa o formulário de dados do usuário na página `/user/settings`.
* `OVERLEAF_SAML_ENTRYPOINT` <strong>(obrigatória)</strong>
  * URL do ponto de entrada do serviço de identidade SAML.
    * Exemplo: `https://idp.example.com/simplesaml/saml2/idp/SSOService.php`
    * Exemplo para Azure: `https://login.microsoftonline.com/8b26b46a-6dd3-45c7-a104-f883f4db1f6b/saml2`
* `OVERLEAF_SAML_ISSUER` <strong>(obrigatória)</strong>
  * O nome do emissor (Issuer).
* `OVERLEAF_SAML_AUDIENCE`
  * Audience esperada na resposta SAML; o padrão é o valor de `OVERLEAF_SAML_ISSUER`.
* `OVERLEAF_SAML_IDP_CERT` <strong>(obrigatória)</strong>
  * Caminho para um arquivo que contém o certificado público do provedor de identidade, usado para validar as assinaturas das respostas SAML recebidas. Se o provedor de identidade tiver vários certificados de assinatura válidos, pode ser um array JSON com os caminhos dos certificados.
    * Exemplo (um certificado): `/var/lib/overleaf/certs/idp_cert.pem`
    * Exemplo (vários certificados): `["var/lib/overleaf/certs/idp_cert.pem", "/var/lib/overleaf/certs/idp_cert_old.pem"]`
* `OVERLEAF_SAML_PUBLIC_CERT`
  * Caminho para um arquivo que contém o certificado público de assinatura a ser incorporado nas requisições de autenticação, para que o IdP possa validar as assinaturas da requisição SAML recebida. É necessário ao configurar o [endpoint de metadados](https://github.com/yu-i-i/overleaf-cep/wiki/Extended-CE:-SAML-Authentication#metadata-for-the-identity-provider) quando a estratégia está configurada com uma `OVERLEAF_SAML_PRIVATE_KEY`. Pode ser fornecido um array JSON com caminhos de certificados para suportar a rotação de certificados. Ao fornecer um array de certificados, a primeira entrada do array deve corresponder à `OVERLEAF_SAML_PRIVATE_KEY` atual. As entradas adicionais do array podem ser usadas para publicar os próximos certificados aos IdPs antes de alterar a `OVERLEAF_SAML_PRIVATE_KEY`.
* `OVERLEAF_SAML_PRIVATE_KEY`
  * Caminho para um arquivo que contém uma chave privada em formato PEM correspondente ao `OVERLEAF_SAML_PUBLIC_CERT`, usada para assinar as requisições de autenticação enviadas pelo passport-saml.
* `OVERLEAF_SAML_DECRYPTION_CERT`
  * Caminho para um arquivo que contém o certificado público, usado para o [endpoint de metadados](https://github.com/yu-i-i/overleaf-cep/wiki/Extended-CE:-SAML-Authentication#metadata-for-the-identity-provider).
* `OVERLEAF_SAML_DECRYPTION_PVK`
  * Caminho para um arquivo que contém a chave privada correspondente ao `OVERLEAF_SAML_DECRYPTION_CERT`, que será usada para tentar descriptografar quaisquer asserções criptografadas recebidas.
* `OVERLEAF_SAML_SIGNATURE_ALGORITHM`
  * Define opcionalmente o algoritmo de assinatura das requisições; os valores válidos são 'sha1' (padrão), 'sha256' (preferível) e 'sha512' (mais seguro, verifique se o seu IdP o suporta).
* `OVERLEAF_SAML_ADDITIONAL_PARAMS`
  * Dicionário JSON de parâmetros de consulta adicionais a acrescentar a todas as requisições.
* `OVERLEAF_SAML_ADDITIONAL_AUTHORIZE_PARAMS`
  * Dicionário JSON de parâmetros de consulta adicionais a acrescentar às requisições 'authorize'.
    * Exemplo: `{"some_key": "some_value"}`
* `OVERLEAF_SAML_IDENTIFIER_FORMAT`
  * Formato do identificador de nome a solicitar ao provedor de identidade (padrão: `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress`). Se usar `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent`, certifique-se de que a variável de ambiente `OVERLEAF_SAML_EMAIL_FIELD` esteja definida. Se for necessário `urn:oasis:names:tc:SAML:2.0:nameid-format:transient`, você também deve definir a variável de ambiente `OVERLEAF_SAML_USER_ID_FIELD`, que pode, por exemplo, ser definida como o endereço de e-mail do usuário.
* `OVERLEAF_SAML_ACCEPTED_CLOCK_SKEW_MS`
  * Diferença de relógio aceitável, em milissegundos, entre cliente e servidor ao verificar os timestamps de validade das condições de asserção OnBefore e NotOnOrAfter. Definir como -1 desativa completamente a verificação destas condições. O padrão é 0.
* `OVERLEAF_SAML_ATTRIBUTE_CONSUMING_SERVICE_INDEX`
  * Atributo `AttributeConsumingServiceIndex` a adicionar à AuthnRequest para indicar ao IdP qual conjunto de atributos anexar à resposta ([link](http://blog.aniljohn.com/2014/01/data-minimization-front-channel-saml-attribute-requests.html)).
* `OVERLEAF_SAML_AUTHN_CONTEXT`
  * Array JSON de valores de formato de identificador de nome para solicitar o contexto de autenticação. Padrão: `["urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"]`.
* `OVERLEAF_SAML_FORCE_AUTHN`
  * Se `true`, a requisição SAML inicial do provedor de serviço especifica que o IdP deve forçar uma nova autenticação do usuário, mesmo que ele possua uma sessão válida.
* `OVERLEAF_SAML_DISABLE_REQUESTED_AUTHN_CONTEXT`
  * Se `true`, não solicita um contexto de autenticação específico. Por exemplo, você pode definir isto como `true` para permitir contextos adicionais, como logins sem senha (`urn:oasis:names:tc:SAML:2.0:ac:classes:X509`). O suporte a contextos adicionais depende do seu IdP.
* `OVERLEAF_SAML_AUTHN_REQUEST_BINDING`
  * Se definida como `HTTP-POST`, solicita a autenticação ao IdP via binding HTTP POST; caso contrário, o padrão é HTTP-Redirect.
* `OVERLEAF_SAML_VALIDATE_IN_RESPONSE_TO`
  * Se `always`, o InResponseTo será validado nas respostas SAML recebidas.
  * Se `never`, o InResponseTo não será validado (padrão).
  * Se `ifPresent`, o InResponseTo só será validado se estiver presente na resposta SAML recebida.
* `OVERLEAF_SAML_WANT_ASSERTIONS_SIGNED` e `OVERLEAF_SAML_WANT_AUTHN_RESPONSE_SIGNED`
  * Quando definidas como `true` (padrão), o Overleaf espera que as asserções SAML e, respectivamente, toda a resposta de autenticação SAML sejam assinadas pelo IdP. Quando ambas as opções são `false`, pelo menos as asserções ou a resposta devem estar assinadas.
* `OVERLEAF_SAML_REQUEST_ID_EXPIRATION_PERIOD_MS`
  * Define o tempo de expiração após o qual um ID de requisição gerado para uma requisição SAML deixa de ser válido se aparecer numa resposta SAML no campo `InResponseTo`. Padrão: 28800000 (8 horas).
* `OVERLEAF_SAML_LOGOUT_URL`
  * Endereço base a chamar com as requisições de logout (padrão: `entryPoint`).
    * Exemplo: `https://idp.example.com/simplesaml/saml2/idp/SingleLogoutService.php`
* `OVERLEAF_SAML_ADDITIONAL_LOGOUT_PARAMS`
  * Dicionário JSON de parâmetros de consulta adicionais a acrescentar às requisições 'logout'.
* `OVERLEAF_SAML_IS_ADMIN_FIELD` e `OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE`
  * Quando ambas as variáveis de ambiente estão definidas, o processo de login atualiza `user.isAdmin = true` se o perfil retornado pelo IdP SAML contiver o atributo especificado por `OVERLEAF_SAML_IS_ADMIN_FIELD` e o seu valor corresponder a `OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE` ou for um array que contenha `OVERLEAF_SAML_IS_ADMIN_FIELD_VALUE`; caso contrário, `user.isAdmin` é definido como `false`. Se alguma destas variáveis não estiver definida, o status de administrador só é definido como `true` durante a criação do usuário administrador no Launchpad.

**Metadados para o provedor de identidade**

A versão atual do Overleaf CE inclui um endpoint para obter os metadados do provedor de serviço: `http://my-overleaf-instance.com/saml/meta`

O provedor de identidade precisará ser configurado para reconhecer o servidor Overleaf como um "provedor de serviço" (Service Provider). Consulte a documentação do seu servidor SAML para obter instruções sobre como fazer isso.

Abaixo está um exemplo de metadados adequados para o provedor de serviço:

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

Anote os certificados, `AssertionConsumerService.Location`, `SingleLogoutService.Location` e `EntityDescriptor.entityID` e configure-os adequadamente no seu IdP, ou envie o arquivo de metadados ao administrador do IdP.

<Accordion title="Exemplo de arquivo variables.env (mínimo)">
  ```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 a passo: goauthentik

Este guia percorre uma configuração testada com o [goauthentik](https://goauthentik.io/). Substitua `https://overleaf.example.com` pela sua `OVERLEAF_SITE_URL` e `https://authentik.example.com` pelo endereço do seu Authentik.

<Steps>
  <Step title="Criar o provedor e a aplicação">
    No Authentik, abra **Applications > Applications** e clique em **New Application**. O assistente cria a aplicação e o seu provedor ao mesmo tempo.

    1\. Dê à aplicação um nome e um slug, por exemplo `overleaf`, e clique em **Next**:

    <Frame caption="Authentik: nome e slug da aplicação">
      <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\. Escolha **SAML Provider** e clique em **Next**:

    <Frame caption="Authentik: escolher o provedor 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\. Preencha o provedor:

    * **Authorization Flow**: `default-provider-authorization-implicit-consent`
    * **ACS URL**: `https://overleaf.example.com/saml/login/callback`
    * **Audience**: um nome para o Overleaf, por exemplo `overleaf`. O Overleaf o envia como `OVERLEAF_SAML_ISSUER`.

    <Frame caption="Authentik: o provedor SAML da aplicação">
      <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\. Abra **Advanced protocol settings** e defina:

    * **Signing Certificate**: um certificado, por exemplo `authentik Self-signed Certificate`
    * **Sign assertions** e **Sign responses**: ambos ativados
    * **Service Provider Binding**: `Post`

    <Frame caption="Authentik: assinatura e binding de um provedor testado (instância de teste)">
      <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\. Clique em **Next** até a última página e envie a aplicação.
  </Step>

  <Step title="Copiar os valores da página do provedor">
    Abra o provedor novamente. Tudo de que o Overleaf precisa está na sua visão geral:

    <Frame caption="Authentik: visão geral de um provedor SAML (instância de teste)">
      <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>

    | Na página do provedor | Variável de ambiente |
    | - | - |
    | **SAML Endpoint** | `OVERLEAF_SAML_ENTRYPOINT` e `OVERLEAF_SAML_LOGOUT_URL` |
    | **Audience** | `OVERLEAF_SAML_ISSUER` |
    | **Download signing certificate** (um arquivo) | `OVERLEAF_SAML_IDP_CERT`, veja o próximo passo |

    <Warning>
      **EntityID/Issuer** em **SAML Configuration** é o nome do próprio Authentik. Não o coloque em `OVERLEAF_SAML_ISSUER`; use o **Audience**.
    </Warning>
  </Step>

  <Step title="Instalar o certificado de assinatura">
    Clique em **Download** em **Download signing certificate** e salve o arquivo como `data/overleaf/certs/idp_cert.pem` no diretório do seu Toolkit. O contêiner o enxerga como `/var/lib/overleaf/certs/idp_cert.pem`:

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

  <Step title="Mapear os atributos">
    O Authentik envia os seus atributos com estes nomes:

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

    Os grupos vêm como `http://schemas.xmlsoap.org/claims/Group`, uma lista. Para tornar os membros do grupo `Admins` do Authentik administradores do Overleaf:

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

    <Warning>
      O indicador de administrador é atualizado a cada login SAML. Com um campo ou valor errado, todo administrador que fizer login via SAML perde os direitos de administrador. Teste o mapeamento primeiro com uma segunda conta de administrador.
    </Warning>
  </Step>
</Steps>

<Accordion title="variables.env testado para o 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.