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] - Comment faire ?


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
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Par défaut [LDAP] - Comment faire ?
    Salut tout le monde,

    je vais tenter de vous résumer mon problème :
    je développe actuellement une applet java qui a pour but de permettre aux professionels de santé de s'identifier via leur carte CPS. Comme toutes les cartes à puce, elle peuvent être volées ou perdues, je dois donc vérifier qu'elles s'ont pas été révoquées par le GIP-CPS (l'autorité qui s'occupe de gérer les CPS). Pour celà, il existe un annuaire LDAP :

    ldap://annuaire.gip-cps.fr/ou=ac-classe-1,o=gip-cps,c=fr?certificateRevocationList;binary
    Quand à moi, après lecture de la CPS, j'ai récupéré pas mal d'informations, dont le numéro d'identifiant de la carte qui sert (d'après la doc) à faire des recherches dans l'annuaire sous le nom "SerialNumber".

    Question : comment faire ?

    Après avoir passé deux jours à potasser la documentation et à fouiller le net à la recherche d'infos j'en suis à la limite du suicide . Sérieusement, j'ai appris toute la théorie de LDAP, j'ai trouvé qu'il existe différents moyens d'y accéder en java (jndi, spring ldap, driver jdbc de novell (et d'autres ? )) mais je n'ai trouvé aucune ressource (tutoriel, exemples de code, etc) qui m'explique clairement comment mettre tout cela en oeuvre dans mon cas : vérifier que l'identifiant que j'ai récupéré n'est pas présent dans cet annuaire.

    Voilà, je me tourne donc vers vous en quête d'un peu d'aide,
    si vous pouviez me donner quelques pistes je vous en serais grandement reconnaissant !

    Merci d'avance !

  2. #2
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    bonjour,

    regarde cette discussion, elle peut t'intéresser.

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Par défaut
    Merci pour ta réponse rapide, j'été déjà tombé sur cette discussion mais elle ne m'avait pas vraiment aidée car certains points restent obscurs :

    Déjà, l'url donnée par le GIP-CPS contient :
    ?certificateRevocationList;binary
    Où mettre ces informations ?

    Ensuite, comment faire une recherche grâce à mon attribut récupéré (SerialNumber) tout en sachant qu'il est fort possible qu'il n'y ai aucune réponse ?

    Enfin, quelle méthode d'accès utiliser ? Les exemples de la discussion que tu m'a donnée utilisent JNDI mais il me semble que spring ldap est plus simple à utiliser, non ?

    Merci d'avance pour vos réponse !

  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Par défaut
    Salut tout le monde,
    Bon alors ce matin, je me suis remis sur ce @#$%§ de ldap et j'en suis arrivé au code suivant (merci JavaWorld ) :

    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
    49
    50
    51
    52
    53
    package ldaptest;
     
    import java.util.Hashtable;
    import javax.naming.Context;
    import javax.naming.NamingEnumeration;
    import javax.naming.NamingException;
    import javax.naming.directory.Attribute;
    import javax.naming.directory.Attributes;
    import javax.naming.directory.DirContext;
    import javax.naming.directory.InitialDirContext;
    import javax.naming.directory.SearchControls;
    import javax.naming.directory.SearchResult;
     
    public class LdapTest {
        public static void main(String[] args) {
            Hashtable<String, String> env = new Hashtable<String, String>();
     
            env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
            env.put(Context.PROVIDER_URL, "ldap://annuaire.gip-cps.fr/ou=ac-classe-1,o=gip-cps,c=fr?certificateRevocationList;binary");
            env.put(Context.SECURITY_AUTHENTICATION, "none");
            env.put(Context.SECURITY_PRINCIPAL, "ou=ac-classe-1,o=gip-cps,c=fr");
            DirContext ctx = null;
            NamingEnumeration<?> results = null;
            try {
                ctx = new InitialDirContext(env);
                SearchControls controls = new SearchControls();
                controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
                results = ctx.search("", "(SerialNumber=2100751173)", controls);
                while (results.hasMore()) {
                    SearchResult searchResult = (SearchResult) results.next();
                    Attributes attributes = searchResult.getAttributes();
                    Attribute attr = attributes.get("SerialNumber");
                    String cps = (String) attr.get();
                    System.out.println(" Numero de CPS = " + cps);
                }
            } catch (NamingException e) {
                throw new RuntimeException(e);
            } finally {
                if (results != null) {
                    try {
                        results.close();
                    } catch (Exception e) {
                    }
                }
                if (ctx != null) {
                    try {
                        ctx.close();
                    } catch (Exception e) {
                    }
                }
            }
        }
    }
    Bon alors, ça compile, ça s'exécute (wahou ) mais ça ne donne pas le résultat escompté : Rien ne s'affiche sur la console alors que 2100751173 est le numéro d'une CPS opposée (carte de test fournie par le GIP).

    Si quelqu'un pouvait éclairer ma lanterne.... Merci d'avance !

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Par défaut
    Bon, je désespères, LDAP est vraiment une prise de tête abominable...

    J'ai essayé de me connecter à l'annuaire du GIP-CPS avec LDAP Browser 2.6, et ... je ne comprends rien !

    En effet, quel que soit le filtre que je précise dans les propriétés de la connexion, j'obtiens ceci :

    voir la miniature attachée
    Peut-être la raison pour laquelle je n'obtiens aucun résultat probant en java

    Donc avant que je me jette du haut d'une falaise sous un train en buvant du poison et avec une corde au coup quelqu'un pourrait-il m'expliquer la logique de ce foutu protocole et ce que tout cela signifie ?

    sivoupaît !!
    Images attachées Images attachées  

  6. #6
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    il me semble qu'il faut redéfinir de dn dans la recherche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    results = ctx.search("ou=ac-classe-1,o=gip-cps,c=fr", "(SerialNumber=2100751173)", controls);

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

Discussions similaires

  1. [LDAP] comment s'y prendre pour faire une recherche complexe
    Par dervish dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 10/03/2006, 14h56
  2. comment faire evoluer ma base vers interbase6
    Par toure32 dans le forum InterBase
    Réponses: 5
    Dernier message: 23/10/2002, 10h59
  3. Réponses: 8
    Dernier message: 18/09/2002, 03h20
  4. Comment faire pour mettre l'ecran en veille ?
    Par March' dans le forum MFC
    Réponses: 6
    Dernier message: 29/08/2002, 14h25
  5. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

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