PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2024 → Caractères "spéciaux" dans le DN (active directory)
Caractères "spéciaux" dans le DN (active directory)
Iniciado por Lapalys, 21,oct. 2021 16:57 - 6 respuestas
Miembro registrado
88 mensajes
Popularité : +3 (3 votes)
Publicado el 21,octubre 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
Miembro registrado
3.886 mensajes
Popularité : +227 (347 votes)
Publicado el 22,octubre 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
Miembro registrado
3.886 mensajes
Popularité : +227 (347 votes)
Publicado el 22,octubre 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
Miembro registrado
88 mensajes
Popularité : +3 (3 votes)
Publicado el 26,octubre 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
Miembro registrado
3.886 mensajes
Popularité : +227 (347 votes)
Publicado el 26,octubre 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
Miembro registrado
88 mensajes
Popularité : +3 (3 votes)
Publicado el 26,octubre 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
Miembro registrado
3.886 mensajes
Popularité : +227 (347 votes)
Publicado el 27,octubre 2021 - 00:26
Non, désolé pas dans l'immédiat

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