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 :

JNDI-LDAP - problème d'affichage de groupes


Sujet :

API standards et tierces Java

  1. #1
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Points : 43
    Points
    43
    Par défaut JNDI-LDAP - problème d'affichage de groupes
    Bonjour,

    J'ai écrit une méthode qui permet d'afficher la description et les groupes auxquels l'uid connecté appartient :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    public void printGroups (String roleBase, String roleSubtree, String roleSearch, String roleName, String uid, String dn)
      throws ch.ldap.ClientLDAPException {
        try {
          // Créer le contrôle de recherche
          SearchControls searchCtls = new SearchControls();
          // Spécifier le search scope
          int numberScope = getNumberScope (roleSubtree);
          searchCtls.setSearchScope (numberScope);
          // Spécifier la base de la recherche
          String searchBase = roleBase;
          // Spécifier le filtre de recherche LDAP
          String searchFilter = roleSearch;
          // Spécifier les attributs à retourner
          String returnedAttrs[]=roleName.split(", ");
          searchCtls.setReturningAttributes(returnedAttrs);
          // Rechercher les objets utilisant le filtre
          NamingEnumeration answer = ctx.search(searchBase, searchFilter, searchCtls);
          // Parcourir et afficher les résultats de la recherche
          while (answer.hasMoreElements()) {
            SearchResult sr = (SearchResult)answer.next();
            System.out.println (sr);
            // Afficher les groupes
            Attributes attrs = sr.getAttributes();
            if (attrs != null) {
              try {
                NamingEnumeration ae = attrs.getAll();
                while (ae.hasMore()) {
                   Attribute attr = (Attribute)ae.next();
                   System.out.println (attr.getID() + " : ");
    	       NamingEnumeration e = attr.getAll();
                   while (e.hasMore()) {
                   System.out.println("       " + e.next());
    	      }
                }
              }
    	  catch (NamingException e) {
                throw new ch.esnig.ldap.ClientLDAPException("Error : Listage des groupes! (printGroups)", e );
    	  }
            }
          }
        }
        catch (javax.naming.NamingException ex) {
          throw new ch.esnig.ldap.ClientLDAPException("Error : Recherche du directory! (printGroups)", ex );
        }
      }
    Les valeurs des paramètres de cette méthode sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    dn=uid={0}, ou=personne, dc=ecole, dc=ch
     
    roleBase=ou=groupeTomcat, dc=ecole, dc=ch
    roleSubtree=SUBTREE_SCOPE
    roleSearch=(&(objectClass=groupOfUniqueNames)(uniqueMember=uid={0}, ou=personne, dc=ecole, dc=ch))
    roleName=cn, description
    Voici ce que ma méthode affiche :
    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
     
    cn=manager: null:null:{description=description: Groupe Manager, cn=cn: manager}
    description :
           Groupe Manager
    cn :
           manager
    cn=tomcat: null:null:{description=description: Groupe Tomcat, cn=cn: tomcat}
    description :
           Groupe Tomcat
    cn :
           tomcat
    cn=webdav_rw: null:null:{cn=cn: webdav_rw}
    cn :
           webdav_rw
    cn=wacasable-user: null:null:{cn=cn: wacasable-user}
    cn :
           wacasable-user
    Le problème est que je ne veux pas que ma méthode affiche les lignes qui ressemble à :
    • cn=wacasable-user: null:null:{cn=cn: wacasable-user}


    Mais je ne vois pas trop comment faire.

    Est-ce que quelqu'un pourrait m'aider SVP ?

    Merci d'avance.

    PS : désolée pour la longueur du message!

  2. #2
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Pourquoi simplement ne testes-tu pas les valeurs avant de les afficher?

    Si tu affiches un objet en Java, la methode d'affichage va appeller la méthode toString de ton objet. Et donc tu n'as aucun contrôle du formatage de l'affichage.

    AJOUT
    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
     
          // Parcourir et afficher les résultats de la recherche
          while (answer.hasMoreElements()) {
            SearchResult sr = (SearchResult)answer.next();
            System.out.println (sr); /* Mauvaise pratique */
            // Afficher les groupes
            Attributes attrs = sr.getAttributes();
            if (attrs != null) {
              try {
                NamingEnumeration ae = attrs.getAll();
                while (ae.hasMore()) {
                   Attribute attr = (Attribute)ae.next();
                   System.out.println (attr.getID() + " : ");/* Mauvaise pratique */
              NamingEnumeration e = attr.getAll();
                   while (e.hasMore()) {
                   System.out.println("       " + e.next()); /* Mauvaise pratique */
             }

  3. #3
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Points : 43
    Points
    43
    Par défaut
    Salut jowo,

    Merci pour tes informations.

    Pour l'instant, de formattage de l'affichage n'est pas très important pour moi.

    Pourrais-tu me donner un exemple de test que je pourrais effectuer avant d'afficher STP?

    Merci d'avance.

  4. #4
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Il faut se poser la question d'où provient le texte "cn=manager: null:null:{description=description: Groupe Manager, cn=cn: manager}".

    Si le formattage de l'affichage n'est pas important en quoi ces nulls te dérangent?

  5. #5
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Points : 43
    Points
    43
    Par défaut
    OK alors je comprends mieux pourquoi le formattage de l'affichage est important...

  6. #6
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Points : 43
    Points
    43
    Par défaut
    ESt-ce que tu pourrais me donner une piste de la façon dont je devrais m'y prendre STP?

  7. #7
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    En premier lieu, savoir comment le résultat de la recherche est structuré.

    Quels sont les attributs retournés?

    Une première approche
    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
     
    // Parcourir et afficher les résultats de la recherche
    while (answer.hasMoreElements()) {
        SearchResult sr = (SearchResult)answer.next();
        //System.out.println (sr);
        // Afficher les groupes
        Attributes attrs = sr.getAttributes();
        if (attrs != null) {
            try {
                NamingEnumeration ae = attrs.getAll();
                while (ae.hasMore()) {
                   Attribute attr = (Attribute)ae.next();
                   System.out.print(attr.getID() + ":");
                   NamingEnumeration e = attr.getAll();
                   while (e.hasMore()) {
                      if (e != null) {
                         System.out.print(e.next());
                      }
                   }
                   System.out.println();
                }
              } 
          ....

  8. #8
    Membre du Club
    Inscrit en
    Février 2005
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 157
    Points : 43
    Points
    43
    Par défaut
    Un grand merci jowo pour ces informations utiles.

  9. #9
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    Salut,

    au lieu de se prendre la tête au niveau du code Java, essai d'améliorer ton filtre .

    Tu peux utiliser l'opérateur ! , soit par exple (! cn=wacasable-user) pour filter d'avantage .

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 71
    Points : 47
    Points
    47
    Par défaut
    J'ai je pense avoir bien suivi votre approche et donc j'arrive à lire les information d'un user mais je n'arrive pas à lire les informations d'un groupe

    merci d'avance

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

Discussions similaires

  1. [ADMT3.2] Problème d'affichage des groupes
    Par casimir92400 dans le forum Windows Serveur
    Réponses: 8
    Dernier message: 25/07/2013, 11h32
  2. LDAP - problèmes réccupérations des Groupes
    Par wanchy dans le forum Windows
    Réponses: 2
    Dernier message: 01/04/2010, 10h28
  3. [JNDI LDAP] Problème d'insertion en masse
    Par voleurdecarottes dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 09/04/2009, 15h17
  4. Problème d'affichage groupe d'option
    Par yblok dans le forum IHM
    Réponses: 6
    Dernier message: 24/05/2008, 06h37
  5. [LDAP/JNDI] recherche des membres d'un groupe
    Par djidane39 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 31/03/2008, 18h22

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