LDAP: Pesquisa LDAP com o ldapsearch

Para que a autenticação ao seu servidor LDAP, seja mais rápida ou com mais opções de login, uma dica é utilizarmos a ferramenta ldapsearch para realizar a query em um servidor LDAP.

O teste feitos para este post estão em produção envolvendo o Microsoft Active Directory, Lotus Quickr Java e Lotus Sametime, logo os comandos abaixo estão bem funcionais para este ambiente.

Comentários

 * Você pode simplificar a query se quiser, deixando apenas o login do usuário que é o campo sAMAccountName
 * Um padrão poderia ser o email da pessoa nome@dominio.com.br, mas é necessário que o AD tenha essa informação populada em um campo
 * Não devemos utilizar objectClass=organizationalPerson, pois o AD atribui esse informação para computadores também. Para que retorne apenas pessoas adicionamos (!(objectClass=computer))
 * Crie um arquivo shell ou bat para utilizar o comando, pois não pode haver espaços ou caracteres estranhos na hora de executar o comando

O comando ldap search
ldapsearch -h SERVIDOR_LDAP -p 389 -b BASE_DN -D USUARIO_BIND -w SENHA_USUARIO_BIND "(&(!(objectClass=computer))(|(cn=LOGIN_NAME)(sAMAccountName=LOGIN_NAME)(|(&(sn=LOGIN_NAME)   (givenname=LOGIN_NAME))(&(sn=LOGIN_NAME)(givenname=LOGIN_NAME)))))" ATRIBUTO_RETORNO

onde:


 * SERVIDOR_LDAP: servidor LDAP que iremos nos conectar
 * BASE_DN: base do diretório para consulta
 * USUARIO_BIND: usuário que tem permissão de consulta
 * SENHA_USUARIO_BIND: senha deste usuário
 * LOGIN_NAME: é a string que o usuário informa para conexão
 * ATRIBUTO_RETORNO: é o atributo de retorno, normalmente o common name cn

Exemplo com dados reais
ldapsearch -h ldap.empresax.com.br -p 389 -b "DC=empresax,DC=com,Dc=br" -D "CN=wpsbind,OU=LOTUS,OU=TI,DC=empresax,DC=com,Dc=br" -w SenhaWPSBind "(&(!(objectClass=computer))(|(cn=fulano)(sAMAccountName=fulano)   (|(&(sn=fulano)(givenname=fulano))(&(sn=fulano)(givenname=fulano)))))" cn

Exemplo utilizando apenas o sAMAccountName
ldapsearch -h ldap.empresax.com.br -p 389 -b "DC=empresax,DC=com,Dc=br" -D "CN=wpsbind,OU=LOTUS,OU=TI,DC=empresax,DC=com,Dc=br" -w SenhaWPSBind "(&(!(objectClass=computer))(sAMAccountName=fulano))" cn