Sintaxe do LDAP / ActiveDirectory BindDN

8

Estou solucionando um firewall de hardware baseado em Linux para um cliente. Esse firewall de hardware se conecta ao ActiveDirectory para autenticação de logon único.

O ActiveDirectory é apenas uma versão pervertida do LDAP, com o melhor de meu conhecimento, e usa a mesma sintaxe do BindDN - corrija-me se estiver errado.

O cliente configurou isso como seu BindDN - as cadeias reais foram substituídas por motivos de privacidade, mas permanecem caracteres especiais e espaços em branco. "algum lugar aleatório \ fubar fubaz"

Isso não parece ser uma sintaxe válida do BindDN para mim e já trabalhei com LDAP antes, mas quando pressionamos o botão Testar para testar esse BindDN, o teste é bem-sucedido. Quando altero apenas um dos caracteres no BindDN e executo o teste novamente, o teste falha.

Estou tentando descobrir qual é o problema aqui:

A) Que eu não entendo completamente as nuances do BindND e sintaxe associada

ou

B) Que o equipamento falha na verificação adequada das entradas e identifica falsamente o teste como um sucesso

Cara
fonte

Respostas:

14

LDAP é apenas um protocolo. E, como Greg disse, a implementação da Microsoft no Active Directory é compatível com os vários RFCs que o definem. (+1 para ele)

A resposta de Doug está parcialmente correta, pois ele fornece um exemplo de um DN de ligação válido. Mas o Active Directory especificamente permite que o valor DN da ligação também seja enviado como outros formulários. A melhor forma de usar na minha opinião é a UserPrincipalName (UPN)que geralmente está na seguinte forma, a menos que tenha sido explicitamente alterada.

A vantagem disso sobre um valor DN normal é que a conta do usuário pode ser movida no AD e o aplicativo usando a credencial não precisa atualizar sua configuração.

Também pode estar no formato NetBIOS herdado, que se parece com isso e parece ser o que seu cliente está usando.

  • <Nome do NetBIOS do domínio> \ <sAMAccountName> (por exemplo, CONTOSO \ user1)

Isso tem o mesmo benefício que o valor UPN, mas novamente é considerado legado. Os nomes NetBIOS deveriam ter morrido há muito tempo, mas isso é um discurso retórico para outro segmento.

Ryan Bolger
fonte
Obrigado! Este comentário sobre as três formas de DN é a peça que estava faltando.
Mark E. Haase
Não tinha idéia de que você poderia usar o UPN como um DN LDAP. Doce.
Jonathon Reinhart
1
Estou impressionado com a quantidade de fornecedores de aplicativos que oferecem suporte apenas à autenticação externa no AD (via LDAP) também não sabem disso.
Ryan Bolger
2

O DN de ligação seria CN = nome de usuário, CN = Usuários, DC = seu domínio, DC = com para um usuário localizado no contêiner Usuários.

Pode funcionar se você também inserir o nome de usuário, pois ele provavelmente pesquisa a propriedade sAMAccountname se o Active Directory estiver ciente. Apenas não anteceda o nome de usuário com o domínio.

Doug
fonte
1

A implementação LDAP da Microsoft é compatível. Qualquer caractere é válido em um DN. Se houver caracteres especiais, eles deverão ser escapados. O espaço em branco não precisa ser escapado, a menos que esteja à frente ou à direita. Um caractere pode ser escapado com uma barra invertida ou o equivalente \ nn hexadecimal.

Nomes distintos
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366101%28v=vs.85%29.aspx

space or # character at the beginning of a string    0x20
space character at the end of a string    0x20
,    comma    0x2C
+    plus sign    0x2B
"    double quote    0x22
\    backslash    0x5C
<    left angle bracket    0x3C
>    right angle bracket    0x3E
;    semicolon    0x3B
LF   line feed    0x0A
CR   carriage return    0x0D
=    equals sign    0x3D
/    forwards slash    0x2F 
Greg Askew
fonte