LDAP: Pesquisa LDAP com o ldapsearch

From Wiki

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 [email protected], 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


Ver também