Skip to main content
Este recurso foi desenvolvido por yu-i-i/overleaf-cep. Aqui oferecemos alguns documentos para a sua configuração.
O Overleaf usa a biblioteca passport-ldapauth, que é relativamente desatualizada, e a compatibilidade com LDAP não pode ser totalmente garantida. Com certos provedores de identidade LDAP (por exemplo, https://goauthentik.io/), podem ocorrer falhas de login. Portanto, se possível, recomenda-se usar preferencialmente o método OAuth/SAML. Para o goauthentik, siga o Passo a passo: goauthentik abaixo, que foi testado.

O que é LDAP

LDAP é um protocolo de autenticação usado para verificação de identidade externa. O Overleaf Server Pro oferece um formulário de login LDAP dedicado na interface web, separado do método de autenticação padrão. Quando um usuário envia seu nome de usuário e senha LDAP, o backend do Overleaf verifica as credenciais no servidor LDAP configurado, por exemplo ldap://ldap:10389.

Um exemplo do Server Pro para LDAP

Configuração

Internamente, o LDAP do Overleaf usa a biblioteca passport-ldapauth. A maioria dessas opções de configuração é repassada ao objeto de configuração server, usado para configurar o passport-ldapauth. Se você estiver tendo problemas para configurar o LDAP, vale a pena ler o README do passport-ldapauth para entender a configuração que ele espera. A variável de ambiente EXTERNAL_AUTH é necessária para ativar o módulo de autenticação LDAP. Essa variável de ambiente especifica quais métodos de autenticação externa estão ativados. O valor dessa variável é uma lista. Se a lista incluir ldap, a autenticação LDAP será ativada. Por exemplo: EXTERNAL_AUTH=ldap saml Diferentemente do Overleaf CEP, em nossa edição ayaka-notes limitamos a autenticação LDAP a um método de autenticação puro, disponível em http://your-overleaf.com/ldap/login. Ao usar métodos de autenticação LDAP, quando um usuário insere um username e uma password no formulário de login, ocorre o seguinte:
  1. Um usuário LDAP é procurado no diretório LDAP usando o filtro definido por OVERLEAF_LDAP_SEARCH_FILTER e autenticado.
  2. Se a autenticação for bem-sucedida, o banco de dados de usuários do Overleaf é verificado em busca de um usuário cujo endereço de e-mail principal corresponda ao endereço de e-mail do usuário LDAP autenticado:
    • Se um usuário correspondente for encontrado, o campo hashedPassword desse usuário é excluído (se existir). Isso garante que o usuário só possa fazer login via autenticação LDAP no futuro.
    • Se nenhum usuário correspondente for encontrado, um novo usuário do Overleaf é criado usando o e-mail, o nome e o sobrenome obtidos do servidor LDAP.
Para usuários que fazem login via LDAP, não armazenamos (ou removemos os existentes) hashes de senha no banco de dados mongo do Overleaf.

Variáveis de ambiente

  • OVERLEAF_LDAP_URL (obrigatória)
    • URL do servidor LDAP.
      • Exemplo: ldaps://ldap.example.com:636 (LDAP sobre SSL)
      • Exemplo: ldap://ldap.example.com:389 (sem criptografia ou STARTTLS, se configurado).
  • OVERLEAF_LDAP_IDENTITY_SERVICE_NAME
    • Nome de exibição do serviço de identidade LDAP, usado na página de login.
    • Padrão: Log in with LDAP Provider.
  • OVERLEAF_LDAP_EMAIL_ATT
    • O atributo de e-mail retornado pelo servidor LDAP, padrão mail. Cada usuário LDAP deve ter pelo menos um endereço de e-mail. Se vários endereços forem fornecidos, apenas o primeiro será usado.
  • OVERLEAF_LDAP_FIRST_NAME_ATT
    • O nome da propriedade que contém o nome do usuário usado na aplicação, geralmente givenName.
  • OVERLEAF_LDAP_LAST_NAME_ATT
    • O nome da propriedade que contém o sobrenome do usuário usado na aplicação, geralmente sn.
  • OVERLEAF_LDAP_NAME_ATT
    • O nome da propriedade que contém o nome completo do usuário, geralmente cn. Se alguma das duas variáveis anteriores não estiver definida, o nome e/ou o sobrenome do usuário são extraídos desta variável. Caso contrário, ela não é usada.
  • OVERLEAF_LDAP_PLACEHOLDER
    • O texto de placeholder do formulário de login, padrão Username.
  • OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN
    • Se definida como true, atualiza os campos first_name e last_name do usuário LDAP no login e desativa o formulário de dados do usuário na página /user/settings para usuários LDAP. Caso contrário, os dados serão obtidos apenas no primeiro login.
  • OVERLEAF_LDAP_BIND_DN
    • O nome distinto (DN) do usuário LDAP que deve ser usado para a conexão LDAP (esse usuário deve poder pesquisar/listar contas no servidor LDAP), por exemplo, cn=ldap_reader,dc=example,dc=com. Se não estiver definida, é usado o bind anônimo.
  • OVERLEAF_LDAP_BIND_CREDENTIALS
    • Senha para OVERLEAF_LDAP_BIND_DN.
  • OVERLEAF_LDAP_BIND_PROPERTY
    • Propriedade do usuário usada para o bind no cliente, padrão dn.
  • OVERLEAF_LDAP_SEARCH_BASE (obrigatória)
    • O DN base a partir do qual os usuários são pesquisados. Por exemplo, ou=people,dc=example,dc=com.
  • OVERLEAF_LDAP_SEARCH_FILTER
    • Filtro de pesquisa LDAP usado para encontrar um usuário. Use o literal ‘{{username}}’ para que o nome de usuário informado seja interpolado na pesquisa LDAP.
      • Exemplo: (|(uid={{username}})(mail={{username}})) (o usuário pode fazer login com e-mail ou com o nome de login).
      • Exemplo: (sAMAccountName={{username}}) (Active Directory).
  • OVERLEAF_LDAP_SEARCH_SCOPE
    • O escopo da pesquisa pode ser base, one ou sub (padrão).
  • OVERLEAF_LDAP_SEARCH_ATTRIBUTES
    • Array JSON de atributos a serem obtidos do servidor LDAP, por exemplo, ["uid", "mail", "givenName", "sn"]. Por padrão, todos os atributos são obtidos.
  • OVERLEAF_LDAP_STARTTLS
    • Se true, é usado LDAP sobre TLS.
  • OVERLEAF_LDAP_TLS_OPTS_CA_PATH
    • Caminho para o arquivo que contém o certificado da CA usado para verificar o certificado SSL/TLS do servidor LDAP. Se houver vários certificados, pode ser um array JSON de caminhos para os certificados. Os arquivos devem estar acessíveis ao contêiner docker.
      • Exemplo (um certificado): /var/lib/overleaf/certs/ldap_ca_cert.pem
      • Exemplo (vários certificados): ["/var/lib/overleaf/certs/ldap_ca_cert1.pem", "/var/lib/overleaf/certs/ldap_ca_cert2.pem"]
  • OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH
    • Se true, o certificado do servidor é verificado em relação à lista de CAs fornecidas.
  • OVERLEAF_LDAP_CACHE
    • Se true, até 100 credenciais por vez serão armazenadas em cache por 5 minutos.
  • OVERLEAF_LDAP_TIMEOUT
    • Por quanto tempo o cliente deve deixar as operações em execução antes de expirar, em ms (padrão: Infinity).
  • OVERLEAF_LDAP_CONNECT_TIMEOUT
    • Quanto tempo o cliente deve esperar antes de expirar nas conexões TCP, em ms (padrão: padrão do SO).
  • OVERLEAF_LDAP_IS_ADMIN_ATT e OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE
    • Quando ambas as variáveis de ambiente estão definidas, o processo de login atualiza user.isAdmin = true se o perfil LDAP contiver o atributo especificado por OVERLEAF_LDAP_IS_ADMIN_ATT e seu valor corresponder a OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE ou for um array contendo OVERLEAF_LDAP_IS_ADMIN_ATT_VALUE; caso contrário, user.isAdmin é definido como false. Se alguma dessas variáveis não estiver definida, o status de administrador só é definido como true durante a criação do usuário administrador no Launchpad.
As cinco variáveis a seguir são usadas para configurar como os contatos dos usuários são obtidos do servidor LDAP.
  • OVERLEAF_LDAP_CONTACTS_FILTER
    • O filtro usado para pesquisar usuários no servidor LDAP a serem carregados nos contatos. O placeholder ‘{{userProperty}}’ dentro do filtro é substituído pelo valor da propriedade especificada por OVERLEAF_LDAP_CONTACTS_PROPERTY do usuário LDAP que inicia a pesquisa. Se não estiver definida, nenhum usuário é obtido do servidor LDAP para os contatos.
  • OVERLEAF_LDAP_CONTACTS_SEARCH_BASE
    • Especifica o DN base a partir do qual a pesquisa de contatos começa. Padrão: OVERLEAF_LDAP_SEARCH_BASE.
  • OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE
    • O escopo da pesquisa pode ser base, one ou sub (padrão).
  • OVERLEAF_LDAP_CONTACTS_PROPERTY
    • Especifica a propriedade do objeto de usuário que substituirá o placeholder ‘{{userProperty}}’ em OVERLEAF_LDAP_CONTACTS_FILTER.
  • OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE
    • Especifica o valor de OVERLEAF_LDAP_CONTACTS_PROPERTY caso a pesquisa seja iniciada por um usuário não LDAP. Se esta variável não estiver definida, o filtro resultante não corresponderá a nada. O valor * pode ser usado como curinga.
O exemplo acima faz com que todos os usuários LDAP que têm o mesmo gid UNIX sejam carregados nos contatos do usuário LDAP atual. Usuários não LDAP terão em seus contatos todos os usuários LDAP com gid=1000 UNIX.

Passo a passo: goauthentik

Este guia percorre uma configuração testada com o goauthentik. Os exemplos usam o Base DN dc=example,dc=com; substitua-o pelo seu.
1

Criar uma conta de bind

O Overleaf primeiro faz login no diretório com uma conta própria para encontrar o usuário. No Authentik, abra Directory > Users, clique em New User, escolha Internal User e clique em Next. Insira um nome de usuário, por exemplo ldapservice, e clique em Create:

Authentik: criar a conta de bind

Abra o novo usuário e clique em Set password. Essa senha vai em OVERLEAF_LDAP_BIND_CREDENTIALS:

Authentik: definir a senha da conta de bind (instância de teste)

Anote o número do usuário na barra de endereços, por exemplo 19 em …/#/identity/users/19. Você precisará dele no passo 3.
2

Criar o provedor e a aplicação

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-ldap, e clique em Next:

Authentik: nome e slug da aplicação

2. Escolha LDAP Provider e clique em Next:

Authentik: escolher o provedor LDAP

3. Defina Bind Mode como Direct binding e Search Mode como Direct querying:

Authentik: modo de bind e de pesquisa do provedor LDAP

4. Mais abaixo, defina Bind Flow como default-authentication-flow e Base DN como o seu Base DN, por exemplo dc=example,dc=com:

Authentik: fluxo de bind e Base DN do provedor LDAP

5. Clique em Next até a última página e envie a aplicação.
3

Permitir que a conta de bind pesquise o diretório

Sem essa permissão, a conta de bind vê apenas a si mesma, a pesquisa não encontra nenhum usuário e todo login LDAP falha.Abra o provedor, vá em Permissions e clique em Assign Role Object Permission. Em Role, digite o número do passo 1 e selecione ak-managed-role--user-<number>; em seguida, ative Search full LDAP directory:

Authentik: conceder à conta de bind a permissão de pesquisa (instância de teste)

A função passa então a exibir uma marca de seleção em Search full LDAP directory:

Authentik: permissões de um provedor LDAP (instância de teste)

4

Executar o outpost LDAP

O Authentik responde ao LDAP por meio de um outpost, um contêiner separado. Abra Applications > Outposts, crie um outpost do tipo LDAP com o seu provedor e implante-o conforme descrito pelo Authentik. Ele escuta na porta 389 do host em que é executado. Quando está conectado, exibe uma marca de seleção verde:

Authentik: um outpost LDAP em execução (instância de teste)

5

Preencher os DNs

A página do provedor mostra o Base DN e um exemplo em How to connect:

Authentik: visão geral de um provedor LDAP (instância de teste)

Não copie os valores do exemplo tal como estão:
  • Bind DN mostra a conta com a qual você está logado. Use em vez disso a conta de bind do passo 1: cn=ldapservice,ou=users,<Base DN>.
  • Search base mostra o Base DN. Use ou=users,<Base DN>.
O Authentik mantém um grupo com o nome de cada usuário em ou=virtual-groups. Pesquisar todo o Base DN por (cn=alice) encontra tanto cn=alice,ou=users,… quanto cn=alice,ou=virtual-groups,…, e o Overleaf recusa um login que corresponda a mais de uma entrada. Mantenha a base de pesquisa em ou=users,<Base DN>.
6

Verificar a pesquisa

Antes de iniciar o Overleaf, execute a pesquisa que ele fará. Ela deve imprimir exatamente um dn::
Nenhum dn: geralmente significa que a permissão do passo 3 está faltando.
7

Mapear os administradores (opcional)

Os grupos de um usuário estão em memberOf, como DNs em ou=groups. Para tornar os membros do grupo Admins do Authentik administradores do Overleaf:
O indicador de administrador é atualizado a cada login LDAP. Com um atributo ou valor errado, todo administrador que fizer login via LDAP perde os direitos de administrador. Teste o mapeamento primeiro com uma segunda conta de administrador.
variables.env
Última modificação em 6 de outubro de 2026