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 [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
- Pega os Grupos de um Usuário no LDAP
- Pesquisa LDAP com o ldapsearch
- Pesquisa LDAP com o curl
- LDAP: Listando Atributos com o ldapsearch
- Filtros de Busca por Diretório