Eu tenho alguns problemas de compreensão do LDAP. Quando eu uso um servidor do Active Directory eu posso ligar com username @ domain e uma senha.
Quando eu uso o ApacheDS, devo fornecer o DN completo do usuário e uma senha.
Então eu tenho as seguintes perguntas:
- Como faço para descobrir o completo dn de um usuário em um servidor ApacheDS com privilégios anônimos e somente o conhecimento do nome de usuário, domínio (e senha)?
- Isso é possível? O servidor ApacheDS é mesmo feito para ser um
- alternativa ao Active Directory?
Respostas:
1 para resposta № 1Geralmente, a autenticação LDAP é feita em duas etapas:
- Mapear um dado identificador de usuário exclusivo (uid) para seu nome distinto usando uma operação de pesquisa com um filtro como
(&(objectClass=user)(uid=%s))
- Use uma operação de ligação com esse dn para autenticar em seu servidor LDAP.
O Active Directory vem com um recurso prático: você pode vincular usando um par de identificadores suportados e o AD fará o mapeamento internamente para você.
O ApacheDS não é um substituto plug-and-play para o AD, mas é extensível. Um desenvolvedor Java pode escrever facilmente um interceptador de autenticação fornecendo o mesmo mapeamento interno do AD.
1 para resposta № 2
Como o marabu disse, você pode simular a autenticação usando uma pesquisa no diretório antes de fazer a ligação.
Você também pode procurar por autenticação SASL, que fornece outras formas de autenticação.
Aqui está uma lista do mecanismo SASL suportado pelo ApacheDS: http://directory.apache.org/apacheds/advanced-ug/4.1.2-sasl-authn.html