Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1 Le 30/04/2013, à 11:47

HaloF

LDAP et modification de schéma

Bonjour,

Je viens chercher de l'aide car cela fait plus d'une semaine que je bute sur un problème lié au fonctionnement d'un serveur LDAP.

Tout d'abord sachez que je débute (depuis 4 semaines) sur l'utilisation et la configuration d'un serveur LDAP. J'ai donc un serveur LDAP configuré sur un serveur Ubuntu de la manière la plus basique possible en suivant deux Tuto  tuto1  tuto2.

Présentation du problème :

Je suis actuellement sur un projet de fin d'étude visant à créer un script (codé en python) qui est sensé lire une base de données et propager certaines informations présente dans la base dans un annuaire LDAP (dans mon cas un numéro de matricule). Mon soucis viens du fait que je souhaite créer un serveur LDAP, réplique du server LDAP utilisé par des centaines de personnes au sein de la structure où je suis. Si mon script venais à corrompre l'annuaire LDAP pendant les tests, cela serais pour le moins embêtant neutral
Du coup j'ai mis en place un serveur LDAP de test et j'ai essayé d'y ajouter le ".ldif" que j'ai récupéré grâce à LdapBrowser et cela me génère comme erreur  :

root@HDVSR-038:~# ldapadd -D "cn=admin,o=directoryRoot" -w pass01 -H ldapi:/// -f villeLDAP.ldif -v
ldap_initialize( ldapi:///??base )
add cl:
        CL_A
add ou:
        Administration
add objectclass:
        top
        organizationalUnit
        a4400user
add description:
        Administrateurs et groupes d'administration 4760
adding new entry "ou=Administration,o=VILLE, o=directoryRoot"
ldap_add: Undefined attribute type (17)
        additional info: cl: attribute type undefined

Cette erreur venant du fait que l'attribut "cl" n'est pas présent dans le schéma du serveur LDAP et après plusieurs recherches infructueuse sur Google (donc pas la peine de me dire "Google est ton ami" tongue) j'ai eu comme idée de supprimer purement et simplement tout les attributs, les "objectclass", ... qui généraient des erreurs de ce type. Cela a marché  relativement bien jusqu'à ce que j'ai cette erreur :

add objectclass:
        top
add description:
        Consultation totale de la liste verte
add cn:
        Consultation totale liste verte
adding new entry "cn=Consultation totale liste verte,ou=Groupes,ou=Administration,o=VILLE, o=directoryRoot"
ldap_add: Object class violation (65)
        additional info: no structural object class provided

Cette erreur est probablement liée au fait qu'il n'y est plus que "top" comme objectclass...

Du coup je ne sais plus quoi faire, soit je résout mon problème en supprimant les attributs gênants soit je configure correctement mon serveur LDAP mais j'ai pas trouvé sur le net de solutions compréhensible pour mon niveau...

J'espère que vos lanternes m'éclairerons mieux que ce que j'ai pu trouver sur la toile. Merci. big_smile

Hors ligne

#2 Le 01/05/2013, à 18:05

JoelS

Re : LDAP et modification de schéma

Il faudrait une copie de ton LDIF.

Dans un DIT LDAP, chaque entrée doit avoir un seul objectclass dit structural. La définition des objectclass étant faite sous la forme d'un arbre d'héritage, c'est le dernier objectclass dans la branche qui compte.

Par exemple, si l'objectclass structural C hérite de l'objectclass structural B qui hérite de l'objectclass structural A, une entrée FOO qui a comme objectclass C a aussi comme objectclass B et A. Mais comme il y a un héritage, on est dans la même branche, et donc il n'y a pas de problème (en fait, on ne devrait même pas voir les objectclass B et A, puisqu'elles sont impliquées par la présence de C, mais dans les faits et pour des raisons technico-historiques, les objectclass A et B apparaîtront). Par contre si tu as un objectclass structural D qui hérite de l'objectclass A, tu ne peux pas avoir une entrée qui ait à la fois l'objectclass C et l'objectclass D. C'est normal, un objectclass structural est ce qui ...structure.. le plus ton entrée.

Si tu as besoin de combiner des objectclass pour une même entrée, tu utilises une seule objectclass structural, et des objectclass auxilliaires pour rajouter les attributs qu'il te manque.

Donc la première chose à faire, c'est de définir comment tu va structurer les entrées qui tu manipules en terme d'objectclass, puis d'attributs.

Tu peux utiliser des navigateurs LDAP qui te permettent d'avoir plus d'information sur les objectclass et les attributs. A ce titre, Apache Directory Studio est bien plus performant que LdapBrowser.

Hors ligne

#3 Le 02/05/2013, à 09:23

HaloF

Re : LDAP et modification de schéma

Ok je pense avoir compris ton explication sur l'héritage des classes LDAP et je vais tester Apache Directory Studio.

Sinon voici un extrait du LDIF en question (jusqu'à l'endroit qui me pause problème:

dn: o=directoryRoot
objectclass: top
objectclass: organization
o: directoryRoot

dn: o=VILLE, o=directoryRoot
objectclass: top
objectclass: organization
o: VILLE

dn: ou=Administration,o=VILLE, o=directoryRoot
cl: CL_A
ou: Administration
objectclass: top
objectclass: organizationalUnit
objectclass: a4400user
description: Administrateurs et groupes d'administration 4760

dn: ou=Administrateurs,ou=Administration,o=VILLE, o=directoryRoot
cl: CL_A
ou: Administrateurs
objectclass: top
objectclass: organizationalUnit
objectclass: a4400user
description: Administrateurs 4760

dn: uid=AdminNmc,ou=Administrateurs,ou=Administration,o=VILLE, o=directoryRoot
cl: CL_A
userpassword:: e1NTSEF9dnMxS2Q0cHJQcERYaVZMTG01UXVyRzR5N2NTbU90MWtQbmx3V0E9PQ
 ==
uid: AdminNmc
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
objectclass: a4400user
lastlogindate: 20130329143650
sn: AdminNmc
cn: AdminNmc

dn: ou=Groupes,ou=Administration,o=VILLE, o=directoryRoot
cl: CL_A
ou: Groupes
objectclass: top
objectclass: organizationalUnit
objectclass: a4400user
description: Groupes d'administration 4760

dn: cn=Consultation totale liste verte,ou=Groupes,ou=Administration,o=VILLE, o
 =directoryRoot
cl: CL_A
objectclass: top
objectclass: groupOfUniqueNames
objectclass: a4400user
description: Consultation totale de la liste verte
cn: Consultation totale liste verte

Et merci de ta réponse smile

Edit: Le logiciel me donne bien plus de détails que le premier que j'utilisai. J'ai vu qu'il y avais une copie du schéma de ma base stocké dans les fichiers temporaire de Apache Directory Studio, j'ai essayé de faire une copie et de la d'add tel quel et ca me renvois une erreur:

root@HDVSR-038:~# ldapadd -Y EXTERNAL -H ldapi:/// -f schema-4bcf5600-5933-4ed9-b253-2410a3b982ff.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=schema"
ldap_add: Invalid syntax (21)
        additional info: ldapSyntaxes: no validator for syntax 1.3.6.1.4.1.1466.115.121.1.54

Là je t'avouerai que je suis un peu pommé x)

Dernière modification par HaloF (Le 02/05/2013, à 10:10)

Hors ligne

#4 Le 06/05/2013, à 09:36

HaloF

Re : LDAP et modification de schéma

up

Hors ligne

#5 Le 06/05/2013, à 22:12

JoelS

Re : LDAP et modification de schéma

Tu ne peux pas ajouter un schéma comme brut de décoffrage, donc c'est normal que ça ne marche pas.

Pour ta première erreur, la classe d'objet groupOfUniqueNames requiert qu'un attribut uniqueMember soit présent à la création de l'entrée.

Tu peux regarder les définitions des classes d'objets, des attributs et des syntaxes en utilisant cet excellent navigateur Web: LDAP Schema Viewer.

Il contient les principales définitions, en tout cas ce qui est courant.

Par contre tu as une définition a4400user qui est complètement locale à ton serveur, le site en question en la connaîtra pas.

Hors ligne

#6 Le 07/05/2013, à 09:17

HaloF

Re : LDAP et modification de schéma

Bah je vais demander l'accès au serveur LDAP, je pourrais directement copier la config sur mon autre serveur. En tout cas merci de tes réponses wink

Hors ligne

Haut de page ↑