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 exemploldap://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çãoserver, 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:
- Um usuário LDAP é procurado no diretório LDAP usando o filtro definido por
OVERLEAF_LDAP_SEARCH_FILTERe autenticado. - 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
hashedPassworddesse 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.
- Se um usuário correspondente for encontrado, o campo
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).
- Exemplo:
- URL do servidor LDAP.
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.
- O atributo de e-mail retornado pelo servidor LDAP, padrão
OVERLEAF_LDAP_FIRST_NAME_ATT- O nome da propriedade que contém o nome do usuário usado na aplicação, geralmente
givenName.
- O nome da propriedade que contém o nome do usuário usado na aplicação, geralmente
OVERLEAF_LDAP_LAST_NAME_ATT- O nome da propriedade que contém o sobrenome do usuário usado na aplicação, geralmente
sn.
- O nome da propriedade que contém o sobrenome do usuário usado na aplicação, geralmente
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.
- O nome da propriedade que contém o nome completo do usuário, geralmente
OVERLEAF_LDAP_PLACEHOLDER- O texto de placeholder do formulário de login, padrão
Username.
- O texto de placeholder do formulário de login, padrão
OVERLEAF_LDAP_UPDATE_USER_DETAILS_ON_LOGIN- Se definida como
true, atualiza os camposfirst_nameelast_namedo usuário LDAP no login e desativa o formulário de dados do usuário na página/user/settingspara usuários LDAP. Caso contrário, os dados serão obtidos apenas no primeiro login.
- Se definida como
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.
- 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,
OVERLEAF_LDAP_BIND_CREDENTIALS- Senha para
OVERLEAF_LDAP_BIND_DN.
- Senha para
OVERLEAF_LDAP_BIND_PROPERTY- Propriedade do usuário usada para o bind no cliente, padrão
dn.
- Propriedade do usuário usada para o bind no cliente, padrão
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.
- O DN base a partir do qual os usuários são pesquisados. Por exemplo,
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).
- Exemplo:
- 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.
OVERLEAF_LDAP_SEARCH_SCOPE- O escopo da pesquisa pode ser
base,oneousub(padrão).
- O escopo da pesquisa pode ser
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.
- Array JSON de atributos a serem obtidos do servidor LDAP, por exemplo,
OVERLEAF_LDAP_STARTTLS- Se
true, é usado LDAP sobre TLS.
- Se
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"]
- Exemplo (um certificado):
- 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.
OVERLEAF_LDAP_TLS_OPTS_REJECT_UNAUTH- Se
true, o certificado do servidor é verificado em relação à lista de CAs fornecidas.
- Se
OVERLEAF_LDAP_CACHE- Se
true, até 100 credenciais por vez serão armazenadas em cache por 5 minutos.
- Se
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_ATTeOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE- Quando ambas as variáveis de ambiente estão definidas, o processo de login atualiza
user.isAdmin = truese o perfil LDAP contiver o atributo especificado porOVERLEAF_LDAP_IS_ADMIN_ATTe seu valor corresponder aOVERLEAF_LDAP_IS_ADMIN_ATT_VALUEou for um array contendoOVERLEAF_LDAP_IS_ADMIN_ATT_VALUE; caso contrário,user.isAdminé definido comofalse. Se alguma dessas variáveis não estiver definida, o status de administrador só é definido comotruedurante a criação do usuário administrador no Launchpad.
- Quando ambas as variáveis de ambiente estão definidas, o processo de login atualiza
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_PROPERTYdo usuário LDAP que inicia a pesquisa. Se não estiver definida, nenhum usuário é obtido do servidor LDAP para os contatos.
- 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_SEARCH_BASE- Especifica o DN base a partir do qual a pesquisa de contatos começa. Padrão:
OVERLEAF_LDAP_SEARCH_BASE.
- Especifica o DN base a partir do qual a pesquisa de contatos começa. Padrão:
OVERLEAF_LDAP_CONTACTS_SEARCH_SCOPE- O escopo da pesquisa pode ser
base,oneousub(padrão).
- O escopo da pesquisa pode ser
OVERLEAF_LDAP_CONTACTS_PROPERTY- Especifica a propriedade do objeto de usuário que substituirá o placeholder ‘{{userProperty}}’ em
OVERLEAF_LDAP_CONTACTS_FILTER.
- Especifica a propriedade do objeto de usuário que substituirá o placeholder ‘{{userProperty}}’ em
OVERLEAF_LDAP_CONTACTS_NON_LDAP_VALUE- Especifica o valor de
OVERLEAF_LDAP_CONTACTS_PROPERTYcaso 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.
- Especifica o valor de
Exemplo
Exemplo
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.Exemplo de arquivo variables.env
Exemplo de arquivo variables.env
Passo a passo: goauthentik
Este guia percorre uma configuração testada com o goauthentik. Os exemplos usam o Base DNdc=example,dc=com; substitua-o pelo seu.
Criar uma conta de bind
ldapservice, e clique em Create:
Authentik: criar a conta de bind
OVERLEAF_LDAP_BIND_CREDENTIALS:
Authentik: definir a senha da conta de bind (instância de teste)
19 em …/#/identity/users/19. Você precisará dele no passo 3.Criar o provedor e a aplicação
overleaf-ldap, e clique em Next:
Authentik: nome e slug da aplicação

Authentik: escolher o provedor LDAP

Authentik: modo de bind e de pesquisa do provedor LDAP
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
Permitir que a conta de bind pesquise o diretório
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)

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

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

Authentik: visão geral de um provedor LDAP (instância de teste)
- 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>.
Verificar a pesquisa
dn::dn: geralmente significa que a permissão do passo 3 está faltando.Mapear os administradores (opcional)
memberOf, como DNs em ou=groups. Para tornar os membros do grupo Admins do Authentik administradores do Overleaf:variables.env testado para o goauthentik
variables.env testado para o goauthentik

