A autenticação de usuário LDAP explicada | Connect2id

A autenticação de usuárioLDAP é o processo de validação de um nome de usuário e senha com um servidor de diretório como MS Active Directory, OpenLDAP ouOpenDJ. Os diretórios LDAP são tecnologia padrão para armazenar informações de usuário, grupo e permissão e servir isso para aplicações na empresa.

A autenticação de usuários com um diretório LDAP é um processo de dois passos. Este artigo explica a mecânica do mesmo e depois como configurá-lo no LdapAuth.

Passo 1 – Resolvendo o nome de utilizador para um atributo de entrada de directório

Entradas de utilizador num directório são identificadas por um nome distinto (DN), que contém uma estrutura parecida com um caminho a partir da raiz do directório (o ambientador da direita):

uid=alice,ou=people,dc=wonderland,dc=net

Para autenticar um utilizador com um directório LDAP necessita primeiro de obter o seu DN assim como a sua palavra-passe.

Com um formulário de login, as pessoas normalmente introduzem um identificador simples como o seu nome de utilizador ou endereço de e-mail. Você não espera que elas memorizem o DN da sua entrada no directório. Isso seria impraticável.

Para resolver este problema, entra uma resolução DN. Ela pega o nome do usuário oremail, então executa uma busca contra o nome ou atributos de e-mail de todos os usuários para encontrar o DN da entrada correspondente. Os diretórios empregam uma indexação e cache altamente eficientes, então essas buscas são normalmente muito rápidas.

Os atributos de diretório a serem buscados são definidos no separador de configuração do searchFilterconfigurationparameter.A configuração padrão do LdapAuth busca os atributos UID e email. O espaço em%u é substituído pelo identificador de usuário digitado na forma de login:

ldapAuth.dnResolution.searchFilter = (|(uid=%u)(mail=%u))

Se você quiser pesquisar por UID somente o filtro de pesquisa teria esta aparência:

ldapAuth.dnResolution.searchFilter = (uid=%u)

Se você quiser procurar por UID, e-mail e número de funcionário, estenda o filtro para

ldapAuth.dnResolution.searchFilter = (|(uid=%u)(mail=%u)(employeeNumber=%u))

Duas coisas importantes a observar ao configurar o DNresolution e criar novos usuários no diretório:

  • Os atributos – nome de usuário, e-mail, etc – com os quais o login dos usuários deve ser único. Se duas entradas tiverem o mesmo atributo de identificação, por exemplo e-mail, a autenticação será prontamente negada.

  • Certifique-se de que cada utilizador que se espera que faça login tem um atributo definido para o atributo de identificação. Por exemplo, se os utilizadores vão entrar com o seu endereço de email, certifique-se que todas as contas têm um atributo de email definido. Caso contrário a autenticação falhará.

O LdapAuth web API não revela na autenticação a causa da falha de login – se foi um nome de utilizador errado, uma palavra-passe errada, ou ambos. Para resolver situações em que um usuário não é capaz de fazer logindes apesar de digitar um nome de usuário e senha corretos, verifique os logs do serviço.

Se um login foi rejeitado devido a um nome de usuário errado, uma linha como esta aparecerá no log:

2012-10-01 10:52:51,460 INFO – user.auth: username=tom authenticated=false message=Invalid username

Se o nome de usuário foi corretamente resolvido, mas a senha estava errada:

2012-10-01 10:55:05,662 INFO – user.auth: username=alice DN=uid=alice,ou=people,dc=wonderland,dc=net authenticated=false message=Invalid password

Se resolvemos corretamente a entrada de diretório do usuário DN, podemos prosseguir para o próximo passo – verificar a senha.

Step 2 – Validando a senha do usuário

Passwords são verificadas por um comando LDAP chamado bind. Uma conexão é aberta para o servidor de diretório, então um pedido é enviado para autenticar a conexão como um determinado usuário, passando sua entrada DN e senha:

DN: uid=alice,ou=people,dc=wonderland,dc=netpassword: secret

Se as credenciais estiverem corretas, o servidor de diretório retorna o sucesso. Caso contrário, retorna um erro LDAP Invalid credentials (código 49).

Important things to note here:

  • A senha é verificada contra um atributo na entrada do usuário dedicada para servir a esse propósito. Se você estiver usando um esquema de diretório padrão, este atributo é chamado de userPassword. No MS Active Directory o nome deste atributo é unicodePwd. Certifique-se de que cada usuário que é esperado que loginhas um atributo de senha definido. Caso contrário, a autenticação falhará.

  • Os valores das senhas são muitas vezes em hash e podem ser adicionalmente protegidos, por exemplo, tornando-os somente para escrita. Portanto, uma simples leitura e comparação do LDAP geralmente não funciona aqui. O comando bind é sempre o método preferido.

  • As palavras-passe são tipicamente sensíveis a maiúsculas/minúsculas.

Again, lembre-se que os ficheiros de registo são seus amigos. Eles registram detalhes de tentativas de everylogin e podem ser usados para rápida resolução de problemas quando a autenticação não está funcionando como esperado. Se você precisar de mais ajuda na configuração do LdapAuthget, entre em contato conosco.

Deixe uma resposta

O seu endereço de email não será publicado.