Como escrever a cadeia de pesquisa LDAP que irá procurar um usuário por nome de usuário e senha?

1

Eu tenho um plug-in LDAP integrado ao meu aplicativo da web, essa parte está funcionando bem, portanto, essa não é uma questão de programação. Esta questão refere-se a uma cadeia de pesquisa LDAP em si. Como é a string de pesquisa se eu quisesse pesquisar um usuário por nome de usuário e senha? Se isso não for possível, existe uma maneira no LDAP para eu autenticar um usuário? Para ser claro, eu já tenho uma ligação bem-sucedida usando uma conta de serviço e não estou tentando conectar ao LDAP, que está funcionando muito bem, agora que posso navegar, estou tentando descobrir qual cadeia de pesquisa é usada para procurar uma determinada usuário e recupere a senha para que eu possa compará-la. Como seria essa consulta de pesquisa LDAP?

Mais alguma clareza:

Eu consigo BIND com um nome de usuário e senha de serviço, bem como o registro A do host remoto e um DN BASE. Agora posso navegar em uma Árvore, além de enviar sequências de pesquisa e recuperar os resultados. Agora quero poder pesquisar um usuário com base em um nome de usuário e senha enviados por formulário.

    
por BigOmega 28.10.2010 / 20:28

3 respostas

2

Se o servidor ldap permitir que você consulte o (s) atributo (s) de senha, dependendo de como ele estiver armazenado, pode ser difícil gravar um filtro de pesquisa para corresponder a uma senha de usuário. A razão é que o atributo userPassword (supondo que isso é o que você está usando para armazenar senhas), pode ser armazenado com vários esquemas de hash diferentes, e alguns desses esquemas realmente requerem que você interprete o atributo userPassword, extraia o sal, use o sal e a senha fornecida pelo usuário para gerar um resumo e, em seguida, compare esse resumo com o que está armazenado no ldap.

O OpenLDAP tem uma entrada de faq no esquema de hash SHA / SSHA aqui , que também inclui algum código para verificar contra um atributo userPassword que usa esses esquemas. É bem possível usar outros esquemas também, eu me lembro de ver MD5 e SMD5, que eram praticamente o mesmo que SSHA / SHA apenas com um algoritmo digest diferente.

No entanto, eu recomendaria (se possível) para ligar os usuários dn com a senha que ele forneceu, e deixar o servidor ldap lidar com o problema de verificar o nome de usuário / dn e senha.

    
por 28.10.2010 / 21:05
1

O formato é:

LDAP://{your full domain name}/ DC={first name of your domain}, DC={2nd name of your domain} , and so on"

Por exemplo:

LDAP://foo.com/ou=Sales,cn=JSavill,dc=foo,dc=com)
    
por 04.02.2011 / 16:33
0

Se você estiver implementando isso em um aplicativo, será muito menos complicado vincular-se à árvore do Ldap do que adivinhar qual esquema de hash e sal foi usado. A ligação é apenas uma linha e uma verificação de exceção / erro.

Como o @Kjetil diz, é possível, mas para mim, não é o jeito de fazer isso. Se você perder o sal ou o hash, isso pode acabar em um falso negativo (a senha limpa está ok, mas o hash está errado). E, além disso, para obter essa informação, você precisa se ligar de qualquer maneira.

    
por 28.10.2010 / 21:16

Tags