Filtro de pesquisa LDAP para o Active Directory

5

Estou tentando procurar usuários dentro do Active Directory por meio de uma consulta LDAP. Basicamente eu estou procurando o usuário desta maneira:

Search DN: dc=mydomain, dc=com
Filter: (sAMAccountName=USER)  where USER is replaced with the provided username.

Agora, se USER é apenas o nome de usuário sem domínio (por exemplo, "Joe"), isso funciona bem. No entanto, eu os recebo no formulário (domain \ username, por ex. "MyDomain \ Joe") e obviamente a pesquisa falha.

Eu vejo duas maneiras:

  • usando um regex no filtro de pesquisa para descartar o domínio
  • usando um filtro de pesquisa completamente diferente

Não sou especialista em LDAP e nem sei se é possível usar expressões regulares nos filtros de pesquisa.

Alguém sabe se é possível e como?

P.S. Não posso pré-processar o nome de usuário para remover o domínio. Isso não pode ser alterado, pois faz parte de um grande sistema.

    
por Francesco De Vittori 20.05.2010 / 11:30

4 respostas

3

Não é possível usar um filtro diferente. A conta de usuário não atribui nome de domínio, portanto, você não pode construir consulta com domínio como parâmetro.

No serviço LDAP do Active Directory contém apenas informações do domínio, para as quais o controlador de domínio é controlador. Se você tiver relações de confiança com outro domínio na floresta, para obter informações sobre o usuário de um domínio diferente, entre em contato com o serviço LDAP desse domínio.

Solução adequada: descarte o nome de domínio do filtro de pesquisa. O atributo sAMAccountName é único no domínio.

    
por 20.05.2010 / 14:27
2

Se você estiver em uma caixa * nix, use os utilitários openldap e a busca é simples. Exemplo

ldapsearch -h servername -b "dc=domain,dc=com" -D [email protected] -W -x sAMAccountName=username

userPrincipalName: [email protected]

Não tenho certeza se você pode usar o regex dentro do filtro. Escreva um script que copie a saída para um arquivo e implemente o regex.

    
por 20.05.2010 / 22:09
0

O LDAP suporta curingas, mas eu não sei sobre o regex (é possível que algumas implementações específicas possam)

Você pode usar o seguinte filtro:

(|(sAMAccountName=USER)(sAMAccountName=*\USER))

O que corresponde ao nome de usuário ou a alguns caracteres, barra invertida e nome de usuário.

Dependendo da ferramenta que você usa, isso afetará como ou se você precisará escapar da barra invertida.

    
por 20.05.2010 / 22:17
0

O nome de domínio do Pre-Win2k não faz parte do atributo sAMAccountName. Se você quiser procurar domínio no nome de usuário ... use userPrincipleName que é o formato username @ domainFQDN Ex: [email protected]

    
por 07.11.2015 / 22:09