Ldap ad dn ldif rdn

bonjour,

Je me retrouve à devoir trempé les mains dans un ldap active directory en ni connaissant pas grand chose.
J’ai un ‘enregistrement’ de ce type:

dn: CN=toto@free.fr,OU=Groupe1,OU=Utilisateurs,OU=Comptes,DC=Mon,DC=extranet,DC=fr changetype: add objectClass: top objectClass: person objectClass: organizationalPerson objectClass: user cn: 000003@free.fr sn: DUPONT 3 l: Paris postalCode: 75020 givenName: jean-pierre 3 streetAddress: 12 rue claude name: 000003@free.fr sAMAccountName: an3 uid: 000003 mail: Titi@free.fr homePhone: 01-02-03-04-05

je souhaite modifier le mot de passe via ldif. Si je fait ça :

dn: CN=toto@free.fr,OU=Groupe1,OU=Utilisateurs,OU=Comptes,DC=Mon,DC=extranet,DC=fr changetype: modify replace: unicodePwd unicodePwd::IgBuAGUAdwBQAGEAcwBzAHcAbwByAGQAIgA= -

Ca marche !
Mais pour des raisons compliqué qui regarge ma tante hortense et moi, j’aimerais adresser “l’enregistrement” via uid
et si je fait ça

dn: uid=000003,OU=Groupe1,OU=Utilisateurs,OU=Comptes,DC=Mon,DC=extranet,DC=fr changetype: modify replace: unicodePwd unicodePwd::IgBuAGUAdwBQAGEAcwBzAHcAbwByAGQAIgA= -

J’ai lu plein de truc sur internet qui me dise que cela devrait marcher mais ca ne marche pas (il trouve pas “l’enregistrement”).
Qu’est ce qui va pas chez moi ?

question bete, vu que c’est de l’AD t’as essayé avec [samaccountname] ?

>>>> Vu ici <<<<[quote]ldap.usernameField – the field name that the username lookups will be performed on. If this property is not set, the default value is uid. Active Directory users should try the default value sAMAccountName.[/quote]

Mais bon je t’avoue que mes connaissance en LDAP se resume a l’integration d’utilisateurs d’un domaine AD a GLPI… :slight_smile:

Il n’existe pas plusieurs dn possible pour une entrée dans un annuaire.

Tu utilises ici l’objectClass user de l’AD, qui a pour RDN l’attribut CN (le RDN est l’attribut qui compose la première partie du dn).
Le dn de ton entrée doit donc commencer par le cn de cette entrée, tu n’as pas le choix.

Ce qui veut dire que si je ne connais pas le cn (CN=toto@free.fr) je ne peux pas faire de modif via ldif…J’ai tout compris (?)

Effectivement.
Après je ne connais pas tous les détails sur ton problème, mais si tu n’a pas d’autres choix que d’utiliser un fichier ldif et la commande ldifde, une solution serait peut-être de faire d’abord un export de tes utilisateurs. Il me semble que tu peux mettre un filtre ldap dans la commande d’export de ldifde, tu pourras donc chercher tes utilisateurs en fonction de leur uid.
Avec cet export, tu récupéreras le dn des utilisateurs, et tu pourras refaire ton ldif d’import à partir de ça.

Mais je te l’accorde, ce n’est pas très pratique.

C’est une solution parmi d’autre (programme c#…)

Ca, je peux effectivement le faire (l’export) mais ca veut dire être sur que le cn ne change pas entre l’export et l’import (en gros, l’utilisateur à la possibilité de changer son compte de connexion.)
D’ou ma question subsidiaire, si je peux abuser, est ce que c’est vraiment déconseillé de changer le cn d’un compte (d’un point de vue purement ldap).

En tout cas, merci pour tes infos.

Ça n’est pas déconseillé, mais changer le cn d’une entrée reviens à renommer cette entrée en quelque sorte (puisque le cn est ici le rdn de l’entrée), donc ce n’est pas forcement l’attribut qui est le plus modifié dans une entrée, mais il peut l’être.
Après je ne sais pas ce que tu appelle compte de connexion, mais ce n’est pas obligatoirement le cn de l’utilisateur.

Mais de toute façon, le mieux est de toujours faire une recherche de ton utilisateur afin de trouver son dn avant de modifier l’entrée, cela au cas où le dn aurait changé depuis ta dernière modification.