Syntaxe LDAP / ActiveDirectory BindDN

8

Je dépanne un pare-feu matériel basé sur Linux pour un client. Ce pare-feu matériel se connecte à ActiveDirectory pour l'authentification Single SignOn.

ActiveDirectory est en gros juste une version pervertie de LDAP à ma connaissance, et utilise la même syntaxe BindDN - corrigez-moi si je me trompe.

Le client a configuré ceci comme leur BindDN - les chaînes réelles ont été remplacées pour des raisons de confidentialité mais des caractères spéciaux et des espaces restent. "somerandomplace \ fubar fubaz"

Cela ne semble pas être une syntaxe BindDN valide pour moi et j'ai déjà travaillé avec LDAP, mais lorsque nous avons appuyé sur le bouton Test pour tester ce BindDN, le test réussit. Lorsque je modifie un seul des caractères dans le BindDN et réexécute le test, le test échoue.

J'essaie de comprendre quel est le problème ici:

A) Que je ne comprends pas complètement les nuances de BindND et la syntaxe associée

ou

B) Que l'appareil ne parvient pas à vérifier correctement les entrées et identifie à tort le test comme un succès

Gars
la source

Réponses:

14

LDAP n'est qu'un protocole. Et comme Greg l'a dit, l'implémentation de Microsoft dans Active Directory est conforme aux différents RFC qui le définissent. (+1 pour lui)

La réponse de Doug est partiellement correcte en ce qu'il donne un exemple de DN de liaison valide. Mais Active Directory permet spécifiquement d'envoyer la valeur Bind DN sous d'autres formes. La meilleure forme à utiliser à mon avis est celle UserPrincipalName (UPN)qui est généralement sous la forme suivante, sauf si elle a été explicitement modifiée.

L'avantage de ceci sur une valeur DN normale est que le compte d'utilisateur peut être déplacé dans AD et l'application utilisant les informations d'identification n'a pas à mettre à jour sa configuration.

Il peut également être sous la forme NetBIOS héritée qui ressemble à ceci et semble être ce que votre client utilise.

  • <Nom NetBIOS du domaine> \ <SAMAccountName> (par exemple CONTOSO \ user1)

Cela a le même avantage que la valeur UPN, mais est à nouveau considéré comme hérité. Les noms NetBIOS auraient dû mourir il y a longtemps, mais c'est une diatribe pour un autre thread.

Ryan Bolger
la source
Je vous remercie! Ce commentaire sur les 3 formes de DN est la pièce du puzzle qui me manquait.
Mark E. Haase
Je ne savais pas que vous pouviez utiliser UPN comme DN LDAP. Doux.
Jonathon Reinhart
1
Je suis étonné de voir combien de fournisseurs d'applications qui ne prennent en charge que l'authentification externe contre AD (via LDAP) ne le savent pas non plus.
Ryan Bolger
2

Le DN de liaison serait CN = nom d'utilisateur, CN = Users, DC = yourdomain, DC = com pour un utilisateur situé dans le conteneur Users.

Cela peut fonctionner si vous entrez simplement le nom d'utilisateur, car il recherche probablement la propriété sAMAccountname si son Active Directory est au courant. Il suffit de ne pas faire précéder le nom d'utilisateur du domaine.

Doug
la source
1

L'implémentation LDAP de Microsoft est conforme. Tout caractère est valide dans un DN. S'il y a des caractères spéciaux, ils doivent être échappés. L'espace blanc n'a pas besoin d'être échappé sauf s'il est en tête ou en fin. Un caractère peut être échappé avec une barre oblique inverse ou l'équivalent \ nn hex.

Noms distingués
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
la source