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

Services Web Java Discussion :

[Xfire]Client avec connection SSL (not-yet-commons-ssl)


Sujet :

Services Web Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 25
    Par défaut [Xfire]Client avec connection SSL (not-yet-commons-ssl)
    Bonjour bonsoir,

    Je développe actuellement un prototype de client/serveur en Java/Php avec une connection SSL.

    Donc mon serveur est en PHP en utilisant NuSoap, ca ca marche bien et le client est en java et utilise Xfire, ca ca marche moins bien.

    En fait je suis mauvais langue, ca marche tres bien sans SSL. J'ai un client dynamique (pas les classes generer a partir du WSDL) et en connection http il n'y a pas de probleme. Mais avec mon certificat signé par moi meme, et donc pas validé directement par Java ca pose probleme.
    J'en reviens donc au SSL : sur la doc de Xfire il y a un exemple de code : http://xfire.codehaus.org/HTTP+Transport qui utilise la librairie Not-yet-commons-ssl pour valider le certificat. Et donc, autant l'exemple de la librairie ( http://juliusdavies.ca/commons-ssl/T...mple.java.html ) fonctionne nickel autant la version proposé par Xfire ne marche pas et pourtant c quasi similaire.
    Dans l'exemple de Juliusdavies il precise que le certificat n'est validé que pour un HttpClient et non pour tout Java, son exemple montre qu'en utilisant URL avec du https ca ne marche pas.

    Or dans mon appli avec Xfire je ne vois pas comment faire la connection sans utilisé URL. Vous pouvez voir l'exemple de code de client dynamic ici : http://xfire.codehaus.org/Dynamic+Client

    Donc pour finir si vous connaissez comment accepter un certificat (que l'on connait) en Java, avec not-yet-commons-ssl ou sans, je suis preneur. Ou alors si vous savez comment avec Xfire creer un client qui utilise HttpClient je prend aussi


    Merci beaucoup d'avance.


    Je met les exemples de code pour vous eviter de devoir allez vous balader sur les sites eventuelements.

    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
    exemple de connection SSL avec xfire en utilisant not-yet-commons-ssl :
    // Technique similar to http://juliusdavies.ca/commons-ssl/TrustExample.java.html
    HttpSecureProtocol protocolSocketFactory = new HttpSecureProtocol();
     
    // "/thecertificate.cer" can be PEM or DER (raw ASN.1).  Can even be several PEM certificates in one file.
    TrustMaterial trustMaterial = new TrustMaterial(getClass().getResource("/thecertificate.cer"));
     
    // We can use setTrustMaterial() instead of addTrustMaterial() if we want to remove
    // HttpSecureProtocol's default trust of TrustMaterial.CACERTS.
    protocolSocketFactory.addTrustMaterial(trustMaterial);
     
    // Maybe we want to turn off CN validation (not recommended!):
    protocolSocketFactory.setCheckHostname(false);
     
    Protocol protocol = new Protocol("https", (ProtocolSocketFactory) protocolSocketFactory, 8443);
    Protocol.registerProtocol("https", protocol);
    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
    exemple seulement avec not-yet-commons-ssl :
    HttpSecureProtocol f = new HttpSecureProtocol(); 
    84    
    85           // might as well trust the usual suspects: 
    86           f.addTrustMaterial(TrustMaterial.CACERTS); 
    87    
    88           // here's where we start trusting usertrust.com's CA: 
    89           f.addTrustMaterial(new TrustMaterial( pemCert )); 
    90    
    91           Protocol trustHttps = new Protocol("https", f, 443); 
    92           Protocol.registerProtocol("https", trustHttps); 
    93    
    94           HttpClient client = new HttpClient(); 
    95           GetMethod httpget = new GetMethod("https://www.usertrust.com/"); 
    96           client.executeMethod(httpget); 
    97           String s = httpget.getStatusLine().toString(); 
    98           System.out.println( "HTTPClient: " + s ); 
    99    
    100          // Notice that Java still can't access it.  Only HTTPClient knows 
    101          // to trust the cert! 
    102          URL u = new URL( "https://www.usertrust.com/" ); 
    103          try 
    104          { 
    105              // This will throw an SSLHandshakeException 
    106              u.openStream(); 
    107          } 
    108          catch ( SSLHandshakeException she ) 
    109          { 
    110              System.out.println( "Java:       " + she ); 
    111          }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    exemple de client dynamic : 
    Client client = new Client(new URL("http://www.webservicex.net/CurrencyConvertor.asmx?WSDL"));
     
            Object[] results = client.invoke("ConversionRate", new Object[] {"BRL", "UGX"});

  2. #2
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 25
    Par défaut
    Resolu : la solution etait de passer par HttpClient et de recuperer un inputStream pour le passer en parametre au client Xfire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    HttpClient HttpCli = new HttpClient();
    HttpMethod HttpGet = new GetMethod("https://adresse de votre service web/index.php?wsdl");
    HttpCli.executeMethod(HttpGet); 
    client = new Client(HttpGet.getResponseBodyAsStream(),String.class);

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 21/02/2012, 21h49
  2. Connecter appli AIR client avec JAVA client
    Par Space23 dans le forum Flex
    Réponses: 1
    Dernier message: 14/04/2011, 15h19
  3. souci gestion client avec connection bd access
    Par angelz dans le forum Windows Forms
    Réponses: 6
    Dernier message: 03/12/2007, 18h36
  4. [JDBC]Erreur "Not yet implemented" avec Firebird 2
    Par bassim dans le forum Connexion aux bases de données
    Réponses: 3
    Dernier message: 04/12/2006, 19h54
  5. Réponses: 1
    Dernier message: 01/12/2006, 21h15

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