IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

[LDAP] recuperation d'info dans l'arborescence


Sujet :

API standards et tierces Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 46
    Par défaut [LDAP] recuperation d'info dans l'arborescence
    Bonjour,

    Je reprend une appli qui se connecte à un annuaire LDAP pour récupérer des informations et alimenter une base de données.

    Etant débutante sur LDAP, j'ai un peu de mal à trouver une solution à mon problème qui est : récupétration d'une info qui semble se trouver dans l'objectclass dominoPerson.

    voici le code actuel :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    ...
    Attributes matchAttrs = new BasicAttributes(true);
    // Recherche des utilisateurs
    NamingEnumeration answer = ctx.search("o=UO1", matchAttrs);
    
    Hashtable listeUtilisateursLdap = new Hashtable();
    			
    while (answer.hasMore())
    {
                 SearchResult sr = (SearchResult) answer.next();
    	Attributes atributes = sr.getAttributes();
    
    	UtilisateurDO utilisateur = new UtilisateurDO();
    	String username = (String) atributes.get("cn").get();
    	utilisateur.setUsername(username);
    	String commonname = (atributes.get("uid")==null)?null:(String) atributes.get("uid").get();
    	utilisateur.setCommonname(commonname);
    	String prenom = (atributes.get("givenname")==null)?null:(String) atributes.get("givenname").get();
    	utilisateur.setPrenom(prenom);
    	String nom = (atributes.get("sn")==null)?null:(String) atributes.get("sn").get();
    	utilisateur.setNom(nom);
    			
    				 
    	// Ajout du matricule
    	String matricule = (atributes.get("matricule")==null)?null:(String) atributes.get("matricule").get();
                 utilisateur.setMatricule(matricule);
    Il s'agit de la donnée matricule que je n'arrive pas à récupérer car elle se trouve dans l'objectclass dominoPerson. Les autres informations(nom, prénom, commonname) se trouvent dans le noeud racine UO1.

    J'ai trouvé quelque part sur ce forum l'utilisation de serchControls et d'une recherche avec SUBTREE_SCOPE (http://www.developpez.net/forums/sho...ight=LDAP+java)

    Est-ce la bonne piste ?

    Je ne peux pas tester ce code de là où je suis, c'est pour cela que je pose la question

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 46
    Par défaut
    Bonjour,

    petite précision :
    Actuellement, mon arborescence LDAP est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    UO1
      |
      |- cn
      |- sn
      |- givenname
      |- objectclass 
                |
                |- InetOrgPerson
                |- dominoPerson
                |         |
                |         |- matricule
                |- ...
                |- uid
    J'arrive donc bien à récupérer cn, sn, givenname, uid... mais pas matricule.
    De plus, quand j'interroge l'annuaire avec LDAP browser, je ne vois que les 2 premières branches (c'est-à-dire : cn, sn, givenname, les objectclass, mais pas plus loin... donc pas le matricule).

    Le problème viendrait-il de l'annuaire ? ou du code qui ne va pas en profondeur ? ( et pourquoi LDAP Browser ne parcours pas les objectclass ?)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 46
    Par défaut
    personne n'a d'idée ??

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 23
    Par défaut
    J'ai eu un peu de mal à comprendre ton problème. L'arborescence LDAP que tu décris est incorrecte.
    "objectclass" est un attribut qui contient plusieurs valeurs (exemple : dominoPerson, inetOrgPerson, organizationalPerson, person, top). Si tu essaies de récupérer la valeur de l'attribut objectclass à l'aide d'une méthode java, tu obtiendras une liste de String.

    En ce qui concerne l'attribut "matricule", il ne me semble pas qu'il existe pas par défaut dans Lotus Domino. Ton schema LDAP est problablement modifié afin d'ajouter des attributs à ton organisation.

    Si tu es débutante, je te conseille plutot d'utiliser des attributs existants. Par exemple, pour le matricule d'un utilisateur, tu peux utiliser "employeeid".

    En espérant que j'ai pu éclaircir un peu ton problème

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 46
    Par défaut
    Bonjour Vitty,

    Tout d'abord, merci de t'etre penché sur mon problème.

    Comme tu le dis, je suis débutante sur LDAP. Mon problème étant la récupération des infos en Java.

    au niveau de l'info "Matricule", il s'agit en effet de EmployeeID. Mon pb est que cette info n'est pas récupérée avec les autres (cn, sn, givenname, ...)

    En utilisant LDAP browser, je ne vois pas non plus l'info ( je ne vois que les 2 premiers niveaux).

    En regardant avec Lotus Domino (enfin je crois), on voit que l'info est dans un objet de type dominoPerson.

    Comment peut-on récupérer des informations d'objet ? ou du moins est-ce possible ?

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 23
    Par défaut
    En fait, ce que tu retrouves dans "objectclass", c'est la classe de ton objet (pas très inventif :p)
    Et les valeurs que tu retrouves :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    top 
    person 
    organizationalPerson 
    inetOrgPerson 
    dominoPerson
    correspondent tout simplement à la hiérarchie de classe de ton objet "dominoPerson"

    Pour l'attribut "matricule", pourquoi n'essaies tu pas de récupérer la valeur de l'attribut "employeeid"?
    En reprenant ton code, ca donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // Ajout du matricule
    String matricule = (atributes.get("employeeid")==null)?null:(String) atributes.get("employeeid").get();
    utilisateur.setMatricule(matricule);

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 46
    Par défaut
    Bonjour Vitty,

    En fait le problème est là : j'ai codé exactement ce que tu as indiqué, mais le matricule vaut null lors de la recup. Pourtant employeeid est bien renseigné dans l'annuaire.

    C'est pourquoi je pensais qu'il y avait qqch qui manquait pour interroger l'arbre plus en profondeur.

    Est-ce le mode de recherche 'SUBTREE_SCOPE' qu'il me manque ?...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [dreamweaver cs5.5] recuperer un info dans un fichier texte ou ini
    Par ethernity06 dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 12/02/2014, 13h42
  2. Réponses: 12
    Dernier message: 11/06/2009, 16h00
  3. Réponses: 8
    Dernier message: 23/04/2008, 20h56
  4. [windev XI] Recuperation des infos dans un xml
    Par nemosfib dans le forum WinDev
    Réponses: 2
    Dernier message: 25/03/2008, 16h27
  5. Réponses: 2
    Dernier message: 19/01/2004, 12h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo