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

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 26
    Points
    26
    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 éprouvé
    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
    Points : 935
    Points
    935
    Par défaut
    bonjour,

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

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 26
    Points
    26
    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
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 26
    Points
    26
    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
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 26
    Points
    26
    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 éprouvé
    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
    Points : 935
    Points
    935
    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);

  7. #7
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par fnobb Voir le message
    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);
    apparement cela semble plutôt poser problème :

    Code console Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Exception in thread "main" java.lang.RuntimeException: javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; remaining name 'ou=ac-classe-1,o=gip-cps,c=fr'
    	at ldaptest.LdapTest.main(LdapTest.java:37)
    Caused by: javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; remaining name 'ou=ac-classe-1,o=gip-cps,c=fr'
    	at com.sun.jndi.ldap.LdapCtx.mapErrorCode(Unknown Source)
    	at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
    	at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
    	at com.sun.jndi.ldap.LdapCtx.searchAux(Unknown Source)
    	at com.sun.jndi.ldap.LdapCtx.c_search(Unknown Source)
    	at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(Unknown Source)
    	at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source)
    	at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source)
    	at javax.naming.directory.InitialDirContext.search(Unknown Source)
    	at ldaptest.LdapTest.main(LdapTest.java:28)

  8. #8
    Membre éprouvé
    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
    Points : 935
    Points
    935
    Par défaut
    Au temps pour moi

    d'aprés la capture d'écran il n'y a pas de d'attibuts "SerialNumber"

    essaie dans le while un autre attribut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                while (results.hasMore()) {
                    SearchResult searchResult = (SearchResult) results.next();
                    Attributes attributes = searchResult.getAttributes();
                    Attribute attr = attributes.get("postalCode");
                    String cps = (String) attr.get();
                    System.out.println(" Code postal = " + cps);
                }

  9. #9
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 26
    Points
    26
    Par défaut
    avec attributes.get("postalCode"); le résultat est le même... mais je pense que le problème viens que je ne suis pas connecté à la bonne base car celle-ci n'a aucune référence à une éventuelle liste de révocation

    Edit : mea culpa, en changant également la ligne ctx.search("","(postalcode=75009)",controls); j'obtiens bien un résultat en console :

    Code console Java : Sélectionner tout - Visualiser dans une fenêtre à part
    Code postal = 75009

  10. #10
    Membre éprouvé
    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
    Points : 935
    Points
    935
    Par défaut
    il y aurait pas un problème de case ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Attribute attr = attributes.get("serialNumber");

  11. #11
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 26
    Points
    26
    Par défaut
    Salut, bon alors ce matin, je pense que j'ai réussi à accéder au bon endroit du répertoire avec LDAP Browser 2.6 (voir la miniature attachée).

    Donc la seule chose visible est le fameux "certificateRevocationList;binary". Question : comment y accéder également en java et surtout que faire avec ce CRL ? Peut-on en extraire la liste des cartes révoqués (ou à la limite de leurs certificats) et si oui, comment faire ça en java ?

    Pour le moment, j'ai essayé de modifier mon code comme ça :

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
               results = ctx.search("", "(certificateRevocationList;binary=*)", controls);
                while (results.hasMore()) {
                    SearchResult searchResult = (SearchResult) results.next();
                    Attributes attributes = searchResult.getAttributes();
                    Attribute attr = attributes.get("certificateRevocationList;binary");
                    String cps = (String) attr.get();
                    System.out.println(" CRL = " + cps);
                }

    mais la seule chose que j'obtiens en retour est uen belle exception :

    Code Console java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exception in thread "main" java.lang.ClassCastException: [B cannot be cast to java.lang.String
    	at ldaptest.LdapTest.main(LdapTest.java:33)

    j'en déduit que ça ne doit pas être la bonne solution
    Images attachées Images attachées  

  12. #12
    Membre éprouvé
    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
    Points : 935
    Points
    935
    Par défaut
    Tu ne dois pas être loin
    l'erreur est "java.lang.ClassCastException: [B cannot be cast to java.lang.String"

    ce que cela dit c'est que tu as le résultat mais pas sous la forme que tu crois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    byte[] cps = (byte[]) attr.get();

  13. #13
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 26
    Points
    26
    Par défaut
    Ah, merci ! Je progresse

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    byte [] cps = (byte []) attr.get();
    for (int i=0;i<cps.length;i++) System.out.print(Integer.toHexString(cps [i]));

    Ce qui donne comme résultat :

    Code Console java : 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
     
    30ffffff8214f30ffffff81ffffffb921130d692affffff8648ffffff86fffffff7d1155030
    3531b3096355461324652311030e63554a1374749502d4350533114301263554b13b4143
    2d434c415353452d3117d3038303532323032303032355a17d3038303532383032303032355a300ff
    ffffa04e304c301f63551d234183016ffffff801425ffffff992fffffff8a0195371f70ffff
    ff83ffffffbe2e2c1c7a656ffffff9f4830b63551d144422930301c63551d124153013ffff
    ff811161632d676970406769702d6370732e667230d692affffff8648ffffff86fffffff7d1
    15503ffffff81ffffff8107fffffffd62177ffffffe02175ffffffa0ffffffa1fffffffc5
    fffffffee136dffffffc147ffffff9effffff94234948ffffffc9ffffff8cffffffef5ef
    fffff8f6e3e1c69ffffffb65a1340ffffff92c492c39ffffffdcffffffc7ffffff89235b
    ffffffdffffffff12cfffffff56afffffff6ffffffd8ffffffd1ffffffc0ffffffb72cf
    fffff9d60ffffffadfffffff46e59ffffffa712ffffffdb44479ffffffa22fffffffdd7
    a69fffffff574ffffff99ffffffcfffffff86ffffffc9ffffffa5ffffffe3ffffffe3fff
    fffb0ffffffa254ffffff931fffffffc9ffffffedffffffae603ffffff8cffffffc6fff
    fff8f3852ffffff92705949ffffffc7ffffffc9337affffffec61ffffffbcffffffa432f
    fffffef84e4f284bffffffb6fffffffaf291d5d545f6531ffffffe1ffffffadffffffbd

    Ce qui correspond à peu près à ce qu'on voit dans LDAP browser (sans les ffffff et avec plein de caractères derrière...)

    Donc bon, c'est mieux mais pas parfait non plus Et surtout : que faire avec ça ? ça ne me dis pas si ma carte est révoquée ... Il doit y avoir un truc que je n'ai pas compris...

  14. #14
    Membre éprouvé
    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
    Points : 935
    Points
    935
    Par défaut
    je ne sais pas si cela va t'aider

    essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // create LDAP URL
    String urlStr = "ldap://annuaire.gip-cps.fr/ou=ac-classe-1,o=gip-cps,c=fr?certificateRevocationList;binary";
    URL url = new URL(urlStr);
    // open connection
    URLConnection con = url.openConnection();
    // get a stream and read the certificate
    InputStream is = con.getInputStream();
    X509CRL crl = new X509CRL(is);
    tu as alors accès au méthodes de X509Certificate

    source

  15. #15
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 26
    Points
    26
    Par défaut
    Ca n'est pas possible car le constructeur de X509CRL est protégé et ne prend pas d'InputStream en paramètre...
    Enfin, la Javadoc de X509CRL donne un exemple qui doit marcher :

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    InputStream inStream = new FileInputStream("fileName-of-crl");
    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    X509CRL crl = (X509CRL)cf.generateCRL(inStream);
    inStream.close();

    Je l'ai donc adapté à mon cas :

    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    InputStream is = con.getInputStream();
    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    X509CRL crl = (X509CRL)cf.generateCRL(is);
    is.close();

    Mais le problème est ailleur :

    Code Console Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Exception in thread "main" java.net.MalformedURLException: unknown protocol: ldap
    	at java.net.URL.<init>(Unknown Source)
    	at java.net.URL.<init>(Unknown Source)
    	at java.net.URL.<init>(Unknown Source)
    	at ldaptest.Test.main(Test.java:15)

    Apparement, on ne peut accéder à ldap qu'avec jndi (ou autres) mais pas via une URLConnection... Enfin je vais essayer de voir s'il est possible de générer un CRL à partir de la chaine hexadécimale que je récupérais tout à l'heure...

  16. #16
    Membre éprouvé
    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
    Points : 935
    Points
    935
    Par défaut
    Alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
               results = ctx.search("", "(certificateRevocationList;binary=*)", controls);
                while (results.hasMore()) {
                    SearchResult searchResult = (SearchResult) results.next();
                    Attributes attributes = searchResult.getAttributes();
                    Attribute attr = attributes.get("certificateRevocationList;binary");
                    byte[] cps = (byte[]) attr.get();
                    InputStream inStream = new ByteArrayInputStream(cps);
                    CertificateFactory cf = CertificateFactory.getInstance("X.509");
                    X509CRL crl = (X509CRL)cf.generateCRL(inStream);
                    inStream.close();
                }

  17. #17
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 26
    Points
    26
    Par défaut
    Ah ah ! C'est très bon ça

    Si je fait un petit :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(crl.toString());

    J'obtiens :

    Code Console java : 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
     
    X.509 CRL v2
    Signature Algorithm: SHA1withRSA, OID=1.2.840.113549.1.1.5
    Issuer: OU=AC-CLASSE-1, O=GIP-CPS, C=FR
     
    This Update: Thu May 22 04:00:25 CEST 2008
    Next Update: Wed May 28 04:00:25 CEST 2008
     
    NO certificates have been revoked
     
    CRL Extensions: 3
    [1]: ObjectId: 2.5.29.18 Criticality=false
    IssuerAlternativeName [
      RFC822Name: ac-gip@gip-cps.fr
    ]
     
    [2]: ObjectId: 2.5.29.35 Criticality=false
    AuthorityKeyIdentifier [
    KeyIdentifier [
    0000: 25 99 2F 8A 00 19 53 71   0F 70 83 BE 2E 2C 1C 7A  %./...Sq.p...,.z
    0010: 06 56 9F 48                                        .V.H
    ]
     
    ]
     
    [3]: ObjectId: 2.5.29.20 Criticality=false
    CRL Number:     0930
     
    Signature:
    0000: 7F D6 21 77 E0 21 75 A0   A1 FC 5F EE 13 6D C1 47  ..!w.!u..._..m.G
    0010: 9E 94 23 49 48 C9 8C EF   5E 8F 6E 3E 1C 69 B6 5A  ..#IH...^.n>.i.Z
    0020: 13 40 92 0C 49 2C 39 DC   C7 89 23 5B DF F1 2C F5  .@..I,9...#[..,.
    0030: 6A F6 D8 D1 C0 B7 2C 9D   60 AD F4 6E 59 A7 12 DB  j.....,.`..nY...
    0040: 44 47 09 A2 2F DD 7A 69   F5 74 99 CF 86 C9 A5 E3  DG../.zi.t......
    0050: E3 B0 A2 54 93 1F C9 ED   AE 60 03 8C C6 8F 38 52  ...T.....`....8R
    0060: 92 70 59 49 C7 C9 33 7A   EC 61 BC A4 32 EF 08 4E  .pYI..3z.a..2..N
    0070: 4F 28 4B B6 FA 0F 29 1D   5D 54 5F 65 31 E1 AD BD  O(K...).]T_e1...


    Ce qui me semble déjà beaucoup plus exploitable comme résultat
    Mais il reste encore (et toujours ) un problème :
    Citation Envoyé par le CRL affiché en Java
    NO certificates have been revoked
    Ce qui est pour le moins étrange... la documentation fournie par le GIP-CPS précise pourtant bien cet URL comme étant l'adresse de la "liste de révocation". Je vais essayer de les contacter pour voir ce qu'ils peuvent me dire. En tout cas merci beaucoup pour ton aide fnobb ! Je ne serait jamais arrivé à ça tout seul

  18. #18
    Membre éprouvé
    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
    Points : 935
    Points
    935
    Par défaut
    Citation Envoyé par bond_never_dies Voir le message
    Ce qui est pour le moins étrange... la documentation fournie par le GIP-CPS présice pourtant bien cet URL comme étant l'adresse de la "liste de révocation".
    c'est la liste des révocations : elle peut être vide !

  19. #19
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 26
    Points
    26
    Par défaut
    Oui, bien entendu qu'elle peut-être vide ! D'ailleur là elle est vide en l'occurence !
    Seulement bon, je ne vais pas aller loin avec une liste vide d'autant qu'il existe bien des cartes révoquées (preuve en est la carte de test que j'ai sous les yeux qui possède un post-it "opposée" en plein milieu ).
    Donc, il doit exister une liste de révocation non vide quelque part et accessible en ldap... Mais où ? Et là, à moins que quelqu'un sur ce forum ai déjà bossée avec les CPS et puisse me donner la réponse, je ne vois que le GIP-CPS qui puisse me le dire

  20. #20
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 32
    Points : 26
    Points
    26
    Par défaut
    Bon alors j'ai ma réponse (qui est complétement à chier mais bon... ). Il faut télécharger en http un CLR de plus de 3mo et lire le fichier...

    Ce qui implique la mise en place d'un script qui télécharge automatiquement la liste tous les matins. En effet je vois mal les clients télécharger un fichier de 3mo à chaque lancement de l'applet, surtout s'ils sont en 56k...

    Je tiens quand même à pousser mon coup de geule, même si personne ne l'entend : le GIP-CPS se fout pas mal du monde : on paye leurs API plus de 500€ et ils sont même pas foutu de mettre en place une base de données consultable en SQL avec une liste de toutes les cartes révoquées, il faut se taper la lecture d'un fichier énorme téléchargé en externe qui en contient même pas le numéro de la carte mais celui de son certificat X509...

    Enfin bref, merci quand même pour le coup de main !

+ 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