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 :

Openldap-JNDI - recherche


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 Openldap-JNDI - recherche
    Bonjour,

    J'aimerais afficher tous les groupes auxquels l'uid connecté appartient et voilà mon code :
    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
    47
    48
     
    public void printGroups (String uid, String dn)
      throws ch.esnig.ldap.ClientLDAPException {
        try {
          // Créer le contrôle de recherche
          SearchControls searchCtls = new SearchControls();
          // Spécifier le search scope
          searchCtls.setSearchScope (SearchControls.SUBTREE_SCOPE);
          // Spécifier le filtre de recherche LDAP
            String searchFilter = "(&(objectClass=top))";
          // Spécifier la base de la recherche
          String searchBase = "ou=person";
          // Spécifier les attributs à retourner
          String returnedAttrs[]={"memberOf"};
          searchCtls.setReturningAttributes(returnedAttrs);
          // Rechercher les objets utilisant le filtre
          NamingEnumeration answer = ctx.search(searchBase, searchFilter, searchCtls);
          // Parcourir les résultats de la recherche
          while (answer.hasMoreElements()) {
            SearchResult sr = (SearchResult)answer.next();
            System.out.println(">>>>>" + sr.getName());
            // 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("Attribute: " + 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 );
    	 }
           }
           else {
             System.out.println ("L'utilisateur n'appartient a aucun groupe !");
           }
         }
        }
        catch (javax.naming.NamingException ex) {
          throw new ch.esnig.ldap.ClientLDAPException("Error : Recherche du directory! (printGroups)", ex );
        }
      }
    Il ne fonctionne pas....
    J'obtiens l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ch.esnig.ldap.ClientLDAPException: Exception rencontree : Error : Recherche du d
    irectory! (printGroups): [LDAP: error code 32 - No Such Object]
            at ch.esnig.ldap.ClientLDAP.printGroups(ClientLDAP.java:134)
            at ch.esnig.ldap.ClientLDAPUI.main(ClientLDAPUI.java:84)
    Caused by: javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Ob
    ject]; remaining name 'ou=person'
    Le problème est que je ne sais pas trop quoi mettre dans searchBase et searchFilter.

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

    Merci d'avance

  2. #2
    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
    Voici le détail de mon DIT :

    il contient 2 noeuds : ou=groupeTomcat et ou=personne

    sous groupeTomcat se trouvent :
    cn=admin
    cn=manager
    cn=tomcat
    ...

    sous personne se trouvent :
    uid=geiers
    uid=hello
    uid=essai
    ...

    Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String searchBase = "dc=esnig, dc=ch";
    // Spécifier le filtre de recherche LDAP
    String searchFilter = "(&(uid=geiers))";
    Le résultat affiché est : uid=geiers, ou=personne

    Comment est-ce que je peux accéder au noeud groupeTomcat afin que ma méthode affiche les groupes auxquels l'uid geiers appartient ?

    Merci d'avance.

  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
    J'ai modifié mon filtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     String searchFilter = "(&(objectClass=groupOfUniqueNames))&(uid=geiersberger)";
    et il m'affiche tous les groupes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    >>>>>cn=admin,ou=groupeTomcat
    >>>>>cn=manager,ou=groupeTomcat
    >>>>>cn=tomcat,ou=groupeTomcat
    >>>>>cn=webdav_admin,ou=groupeTomcat
    >>>>>cn=webdav_rw,ou=groupeTomcat
    >>>>>cn=webdav_cnip_rw,ou=groupeTomcat
    >>>>>cn=wacasable-user,ou=groupeTomcat
    Apparemment il ne prend pas en compte mon instruction uid=geiersberger. Comment est-ce que je peux faire ?

    Merci d'avance.

  4. #4
    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,

    un groupe sous ldap est constitué de membre (attribut member) . Chacun des membres sont des entrées de ton annuaire.

    exple:

    dc=esnig,dc=ch
    o=Service X
    uid= uid=geiersberger
    o=Groupe
    Groupe X
    member = (uid=geiersberger,o=Groupe,dc=esnig,dc=ch)

    Le filtre que tu cherches à poser ne peut donc pas fonctionner. Il faut filtrer sur l'attribut member et non uid a mon avis.

  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
    Comment est-ce que je peux mettre dans mon filtre quelque chose comme :

    Lister les groupeTomcat where uid=geiersberger, dc=esnig, dc=ch ?

    Voici ce que j'ai codé, mais ça me retourne la liste de tout ce qui est dans groupeTomcat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     String searchFilter = "(&(objectClass=groupOfUniqueNames))(uniqueMember=dn)";
    ma variable dn correspond à uid=geiersberger, dc=esnig, dc=ch

    Je ne sais plus du tout dans quelle direction chercher.

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

  6. #6
    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,

    Un groupe est une entrée (comme uid=toto,dc=x,dc=y) composé de membre. un membre est un attribut de l'entrée groupe (comme password,mail, ... ).

    un filtre n'a donc aucun interret.

  7. #7
    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 beegood,

    Merci pour tes infos.

    Comment ferais-tu alors pour afficher les groupes auxquels un membre appartient ?

    J'avoue que je suis perdue...

    Merci d'avance!

  8. #8
    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,

    j'avoue ne pas encore savoir.

    En fait je suis sur la même problematique. J'imagine avoir des groupes dans mon annuaire (openLdap) relatif à mes applications, un peu comme toi.

    L'idée serait lorsque la personne s'authentifie savoir à quel groupe elle appartient.

    J'imagine avoir un attribut spécifique pour mes entrées users permettant de stocker le ou les groupes auxquels il appartient comme:

    dc=x,dc=fr
    o=serviceX
    uid=toto
    mail=xxxxx
    tel=xxxxx
    adresse=xxxxx
    groupe= groupe 1
    groupe= groupe 2

    ainsi j'imagine pouvoir connaitre les groupes auxquels mon user appartient.

  9. #9
    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 beegood,

    A vrai dire, ça fait déjà un bon moment que je planche sur cette problématique.

    Dans mon cas, chaque groupe de mon groupe général groupeTomcat contient un ou plusieurs uniqueMember=uid xxx, dc=xxx, dc=xxx).

    J'imaginais que c'était simple de filtrer depuis ou=groupeTomcat et de rechercher l'uid connecté.
    J'ai essayé plusieurs syntaxes, mais sans succès...

  10. #10
    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
    peux tu me donner un schema simplifié de la structure de ton annuaire ?

  11. #11
    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
    Voici le schéma :

    1. dc=esnig, dc=ch
    2. noeud1 : ou=groupeTomcat. noeud2 : ou=personne
    3. sous noeud1 : cn=admin
    cn=manager
    cn=tomcat
    ...
    sous noeud2 : uid=geiersberger
    uid=xxx
    ...

  12. #12
    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
    tu cherches bien à filtrer les groupes de maniere à récuperer les groupes d'appartenance d'un individu ?

  13. #13
    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
    Oui c'est bien ça beegood.
    J'aimerais filtrer les groupes de l'uid connecté

  14. #14
    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
    je cherche de mon coté et je te tiens au courrant

  15. #15
    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
    Ca marche beegood.

    Je te tiens aussi au courant!

  16. #16
    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,

    j'ai crée mon groupe comme suit:
    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
     
    version: 1
     
    # create FIRST Level groups branch
     
    dn: ou=groups,dc=example,dc=com
    objectclass:organizationalunit
    ou: groups
    description: generic groups branch
     
    # create the itpeople entry under groups
     
    dn: cn=itpeople,ou=groups,dc=example,dc=com
    objectclass: groupofnames
    cn: itpeople
    description: IT security group
    member: cn=William Smith,ou=people,dc=example,dc=com
     
    # create the hrpeople entry under groups
     
    dn: cn=hrpeople,ou=groups,dc=example,dc=com
    objectclass: groupofnames
    cn: hrpeople
    description: Human Resources group
    member:
    et j'utilise le filtre suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String searchFilter="(&(member=cn=Robert Smith,ou=people,dc=example,dc=com))"
    ce qui me renvoi le groupe hrpeople

  17. #17
    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
    Merci beegood.

    De mon côté, je suis arrivée à la solution suivante :

    Base de recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String searchBase = "ou=groupeTomcat, dc=esnig, dc=ch";
    Filtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     String searchFilter = "(&(objectClass=groupOfUniqueNames)(uniqueMember=uid=huguenin, ou=personne, dc=esnig, dc=ch))";
    A+

  18. #18
    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
    on est arrivé au même point.

    A+

  19. #19
    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
    En tout cas merci beegood pour ton aide!

  20. #20
    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
    c'est normal, si tu as encore besoin d'aide n'hésites pas.

    sinon tu travailles sur quell type d'annuaire ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [JNDI] Recherche d'attribut dans un LDAP via le common name
    Par lachik dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 02/12/2014, 13h33
  2. [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, 17h22
  3. JNDI et OpenLdap
    Par scolyo dans le forum Langage
    Réponses: 6
    Dernier message: 04/07/2006, 15h41
  4. Filtre de recherche -- Openldap
    Par Jack_le_Boulet dans le forum Réseau
    Réponses: 9
    Dernier message: 10/03/2006, 12h47
  5. LDAP/JNDI - recherche du dn
    Par sangei dans le forum API standards et tierces
    Réponses: 35
    Dernier message: 19/12/2005, 09h47

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