Ir para o conteúdo

LDAP e Active Directory

O Drovio Server pode autenticar os utilizadores junto de um diretório LDAP ou de um Active Directory da Microsoft. As contas são criadas automaticamente no primeiro início de sessão, não havendo portanto nada a aprovisionar à mão. O detalhe dos campos é descrito na referência de configuração.

O LDAP pode coabitar com as contas locais e com o SSO. Só diz respeito à aplicação Drovio, uma vez que o cliente web não exige qualquer conta.

Desenrolar de um início de sessão

Cada início de sessão segue a sequência clássica ligação, pesquisa, ligação:

  1. O Drovio Server liga-se ao diretório com a conta de serviço.
  2. Procura o utilizador sob base, com a ajuda de search_filter, onde {0} é substituído pelo endereço de e-mail introduzido no formulário.
  3. Liga-se uma segunda vez com o nome distinto do utilizador e a palavra-passe fornecida. É esta segunda ligação que autentica.

Três consequências a ter em conta ao escrever o seu filtro

  • A pesquisa incide sobre toda a subárvore situada sob base.
  • O filtro deve resolver para uma entrada e uma só. Se encontrar várias, o início de sessão é recusado em vez de autenticar sobre uma correspondência arbitrária.
  • Os utilizadores iniciam sessão com um endereço de e-mail. O valor é despojado dos seus espaços e passado a minúsculas, e deve ser sintaticamente válido: um simples sAMAccountName é rejeitado ainda antes de o diretório ser contactado.

Apenas o nome distinto é relido a partir do diretório. Nenhum atributo é recuperado, e o mecanismo de ligação é simples, pelo que o Kerberos e os outros mecanismos SASL não estão disponíveis.

Configurar a ligação

As definições encontram-se sob Users no painel de administração, na secção LDAP / Active Directory.

Campo do painel Chave de configuração Exemplo
Status enabled true
URL url ldaps://ldap.example.com:636
Service Account DN service_account_dn cn=drovio,ou=services,dc=example,dc=com
Service Account Password service_account_password
Base base ou=users,dc=example,dc=com
Search Filter search_filter ver abaixo
CA Certificate ca_certificate_path /etc/drovio-server/ldap-ca.pem

A conta de serviço só precisa do direito de pesquisar na subárvore situada sob base, nada mais.

(&(objectClass=inetOrgPerson)(mail={0}))
(&(objectClass=user)(mail={0}))
(&(objectClass=user)(userPrincipalName={0}))

O valor fornecido por predefinição é (&(objectClass=*)(mail={0})). Funciona, mas restringir a classe de objeto torna a pesquisa menos dispendiosa e a restrição de unicidade mais fácil de satisfazer.

As alterações produzem efeito no início de sessão seguinte. Nenhum reinício é necessário.

Não existe botão de teste

O painel não sabe validar a configuração por si próprio. Guarde-a, peça a um utilizador que tente iniciar sessão, depois leia o registo do servidor. Cada falha aí é consignada com o passo em causa, que a tabela de Resolução de problemas faz corresponder ao campo a verificar.

Ligar-se em LDAPS

Utilize ldaps:// na porta 636. O simples ldap:// faz circular as credenciais em claro, e o servidor avisa uma vez no registo.

O StartTLS não é suportado. Os dois modos são o texto em claro sobre ldap:// e o TLS implícito sobre ldaps://.

ca_certificate_path designa o certificado a considerar de confiança. Aceita PEM como DER, bem como um conjunto PEM que contenha toda uma cadeia. Pode aí colocar uma autoridade de certificação ou diretamente o certificado do diretório, o que permite fazer funcionar um certificado autoassinado.

O ficheiro substitui o arquivo do sistema, não o completa

Quando ca_certificate_path está preenchido, a ligação LDAP só confia no que esse ficheiro contém. Um certificado de diretório emitido por uma autoridade pública reconhecida deixa de ser validado se a sua cadeia aí não figurar igualmente. Deixe a definição vazia para utilizar o arquivo de confiança do Java.

O certificado deve, aliás, corresponder ao anfitrião indicado em url, e a definição só é lida para os URL em ldaps://. Preenchê-la ao lado de um URL em ldap:// fica sem efeito.

Criação automática das contas

No primeiro início de sessão bem-sucedido, o Drovio Server cria a conta:

Campo da conta Valor
E-mail O endereço introduzido no formulário
Nome de utilizador A parte local desse endereço, jane.doe@example.com dando jane.doe

Nenhum atributo do diretório é retomado, ao contrário do SAML e do OIDC, que dispõem das suas próprias definições email_attribute e username_attribute. Os utilizadores podem mudar o seu nome de utilizador em seguida, e os inícios de sessão posteriores deixam essa alteração intacta.

Nenhuma palavra-passe é alguma vez armazenada para uma conta LDAP, e nenhum e-mail de verificação é enviado. As mudanças de palavra-passe, as reposições e a política de palavra-passe permanecem inteiramente da alçada do seu diretório: o painel de administração não oferece qualquer edição de credenciais para estas contas.

Verifique o seu pool de licenças antes de abrir o LDAP a um diretório extenso

A criação de conta segue users.license_allocation como qualquer outra conta. Se nenhum lugar estiver livre, a conta é criada mesmo assim, simplesmente sem licença. O utilizador é avisado disso na aplicação Drovio e o registo do servidor consigna:

Could not automatically allocate a license: no more free license left...

Restringir o acesso a um grupo ou a uma unidade organizacional

Não existe qualquer definição dedicada, e não é necessária. Os dois campos existentes bastam:

  • Por subárvore. Faça apontar base para o ramo que contém os utilizadores autorizados, por exemplo OU=Drovio Users,DC=example,DC=com. Tudo o que estiver fora torna-se invisível para a pesquisa.
  • Por pertença a um grupo. Adicione uma cláusula ao filtro:

    (&(objectClass=user)(mail={0})(memberOf=CN=Drovio,OU=Groups,DC=example,DC=com))
    

    Em Active Directory, utilize a regra de correspondência memberOf:1.2.840.113556.1.4.1941:= em vez de memberOf para incluir os grupos aninhados.

O controlo tem lugar a cada início de sessão. Retirar alguém do grupo bloqueia-o, portanto, imediatamente. Tenha presente que o filtro deve continuar a corresponder a uma entrada e uma só.

Combinar com os outros métodos de início de sessão

Combinação Comportamento
LDAP e contas locais O diretório é interrogado em primeiro lugar. Se rejeitar as credenciais, o mesmo e-mail e a mesma palavra-passe são em seguida experimentados na conta local
LDAP e SAML Suportados, seguem caminhos distintos
LDAP e OIDC Suportados, seguem caminhos distintos

Para impor a autenticação apenas pelo diretório, desative users.auth.local.

Revogar um acesso

Eliminar ou desativar a conta no diretório bloqueia o início de sessão logo na tentativa seguinte. O que isso não faz é eliminar o que quer que seja do lado do Drovio: não existe qualquer tarefa de reconciliação. A ficha do utilizador e o seu lugar de licença subsistem ambos, se users.license_allocation estiver desativado ou definido em modo new_user.

Para libertar o lugar, elimine o utilizador a partir do separador Users do painel de administração, ou ative users.remove_inactive para que as contas não utilizadas sejam limpas periodicamente.

Limites de exploração

Alguns comportamentos são fixos e merecem ser conhecidos no momento de dimensionar a implantação ou de abrir a firewall:

Comportamento Valor
Ligações por autenticação Duas, uma para a conta de serviço e uma para o utilizador. Não são partilhadas
Tempo limite de ligação 30 segundos
Tempo limite de leitura 60 segundos
Reencaminhamentos Ignorados

Os reencaminhamentos ignorados contam numa floresta Active Directory multidomínio: os utilizadores cuja conta reside num domínio diferente daquele indicado em url não são encontrados. Faça antes apontar o Drovio Server para um catálogo global, em ldaps:// na porta 3269, ou implante um servidor por domínio. O catálogo global só expõe uma parte dos atributos, o que basta aqui uma vez que apenas o nome distinto é utilizado.