PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Caractères "spéciaux" dans le DN (active directory)
Caractères "spéciaux" dans le DN (active directory)
Débuté par Lapalys, 21 oct. 2021 16:57 - 6 réponses
Membre enregistré
87 messages
Popularité : +3 (3 votes)
Posté le 21 octobre 2021 - 16:57
Bonjour

Selon cette doc de M$, pour un distinguishedName dans l'Active Directory, certains caractères doivent être précédés d'un \
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ldap/distinguished-names

Quand j'utilise LDAPAjouteAttribut pour créer un nouveau groupe avec un nom d'attribut = distinguishedName et une valeur ="TestPLA2\>" j'ai systématiquement l'erreur Syntaxe DN non valide (34)

Je suis sur une appli 32 bit en unicode (LDAP v3) et dans l'exemple ci-dessous, les valeurs entre guillemets sont en fait, dans mon code, des variables chaines ANSI. Ce code créer bien un groupe si j'utilise TestPLA au lieu de TestPLA\> (TestPLA2> ne fonctionne pas non plus).

LDAPDébutAjout(sSessionLDAP)
LDAPAjouteAttribut("objectClass","top")
LDAPAjouteAttribut("objectClass","group")
LDAPAjouteAttribut("objectCategory","CN=Group,CN=Schema,CN=Configuration,DC=MonDomaine,DC=com")
LDAPAjouteAttribut("distinguishedName","CN=TestPLA2\>,OU=Test,OU=Nom,DC=MonDomaine,DC=com")
LDAPAjouteAttribut("cn","TestPLA2\>")
LDAPAjouteAttribut("instanceType",0x4)
LDAPAjouteAttribut("sAMAccountName","Test2.PLA")
LDAPValideAjout(sSessionLDAP,"CN=TestPLA2\>,OU=Test,OU=Nom,DC=MonDomaine,DC=com")

Quelqu'un a-t-il déjà expérimenté ces caractères spéciaux dans l'AD ?

Merci d'avance.

--
Bon dev.

Patrick Lalemand
https://www.lapalys.ca
Membre enregistré
3 881 messages
Popularité : +227 (347 votes)
Posté le 22 octobre 2021 - 01:14
Bonjour,
Certain caractère, pour être reconnu par certaines fonctions, ils doivent être précédé d'un caractère d'échappement en l'occurrence "\".
Pour que l'antislash soit traité comme tel il doit donc être "échappé".
LDAPAjouteAttribut("cn","TestPLA2\\>")


--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
3 881 messages
Popularité : +227 (347 votes)
Posté le 22 octobre 2021 - 01:18
Cela peut être comparé à l'utilisation de la double quote qui doit être doublée dans une chaîne pour être prise en compte

--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
87 messages
Popularité : +3 (3 votes)
Posté le 26 octobre 2021 - 15:30
Bonjour Voroltinquo

Ça ne fonctionne pas.

Juste pour être clair, je teste un cn = "TestPLA2>"
Le > étant le caractère spécial. En ajoutant un \ ou un \\ devant le >, toujours la même erreur.

J'ai aussi remarqué, dans le centre d'administration Active Directory, que les caractères spéciaux sont carrément refusés dans le cn quand je crée un nouvel user (une bulle me montre les caractères interdits). Je ne peux donc pas utiliser ce moyen pour écrire ce caractère spécial et voir comment ensuite je le lit avec WinDev.

--
Bon dev.

Patrick Lalemand
https://www.lapalys.ca
Membre enregistré
3 881 messages
Popularité : +227 (347 votes)
Posté le 26 octobre 2021 - 16:55
Lapalys a écrit :
Juste pour être clair, je teste un cn = "TestPLA2>"

Ooops j'ai du lire trop rapidement désolé.
il faut en effet échapper le '>'. la doc précise :
If an attribute value contains other reserved characters, such as the equals sign (=) or non-printable characters, it must be encoded in hexadecimal by replacing the character with a backslash followed by two hex digits.

'>' ne fait pas partie de ces "autres caractères" mais on peut toujours tenter le coup (un hexa dans une chaîne est reconnu comme caractère par les outils MS)
ça donnerait donc
LDAPAjouteAttribut("cn","TestPLA2\03E")


--
Il y a peut être plus simple, mais, ça tourne
Membre enregistré
87 messages
Popularité : +3 (3 votes)
Posté le 26 octobre 2021 - 17:14
J'ai essayé \03E et \3E et \0x3E ... Toujours la même erreur.
Avez-vous l'opportunité d'essayer cela sur un AD quelconque ?
Merci

--
Bon dev.

Patrick Lalemand
https://www.lapalys.ca
Membre enregistré
3 881 messages
Popularité : +227 (347 votes)
Posté le 27 octobre 2021 - 00:26
Non, désolé pas dans l'immédiat

--
Il y a peut être plus simple, mais, ça tourne