2012-08-10 3 views
0

J'essaye d'écrire mon premier client SOA, et j'ai des difficultés avec la partie "SSL 2-way ".Erreur de poignée de main SOA cllient

Notre serveur fonctionne sous Weblogic, mais mon application est une simple application Java Console - elle ne fonctionne dans aucun conteneur.

Le serveur utilise et requiert des certificats. Nous utilisons des certificats de confiance de Godaddy.com, et nous avons également des certificats internes. Notre système m'a donné les certificats de serveur, que j'ai ajoutés à mon fichier JRE "cacerts" en utilisant keytool. On m'a dit que je devrais utiliser Spring-WS car cela me faciliterait la vie, mais j'ai du mal à le faire fonctionner, car il y a pas mal de variations que Chap. 7 mentions, et je ne suis pas sûr de savoir lequel je devrais utiliser. Il a également créé un fichier .jks pour moi personnellement à utiliser pour mon autorisation.

Je préférerais ne pas utiliser Spring du tout, pour cette application simple (la méthode SOA est une méthode simple « Ajouter un commentaire » sans données de fond de retour.

Je travaille avec MyEclipse 9.1 et essaie de utiliser Maven4MyEclipse ainsi

Ma question est:.

Étant donné que mes certs d'authentification seront disponibles via le JRE cacerts fichier (si je comprends bien), la principale chose que je dois faire est de pouvoir Présenter mon fichier .jks pendant la négociation SSL

Puis-je faire cela sans Spring? Si oui, y a-t-il un moyen de définir simplement une propriété System avec mon fichier .jks afin qu'il soit géré automatiquement? Ou ai-je vraiment besoin d'utiliser Spring pour gérer la partie autorisation?

Si ce dernier, comment puis-je savoir Type d'intercepteur de sécurité à utiliser? XwsSecurityInterceptor ou Wss4jSecurityInterceptor?

Ou une autre question vient de m'arriver. Le fichier .jks peut-il également être ajouté au fichier cacerts et l'autorisation peut-elle être gérée automatiquement?

Merci,

Mitch

P.S. Croyez-le ou non, il n'y a apparemment aucun exemple de client Java dans mon organisation pour simplement rechercher un modèle.

Répondre

2

Pour l'authentification à deux voies, je l'ai toujours utilisé le followin lors du démarrage de l'application client:

java -Djavax.net.ssl.keyStore=myClientKeystore -Djavax.net.ssl.keyStorePassword=123456 -Djavax.net.ssl.trustStore=myTrustStore -Djavax.net.ssl.trustStorePassword=123456 -Djavax.net.debug=ssl 

C'est, mes clients certificat privé est dans le « myClientKeystore » et le certificat public du serveur est en "myTrustStore". Le fichier javax.net.debug = ssl vous facilitera la vie, car il génère de jolies informations de débogage si vous ne pouvez pas faire fonctionner la session SSL.

C'est pour la partie SSL. Ensuite, je pense que vous mélangez SOA avec les services Web et SOAP. SOA signifie généralement une architecture orientée service et est de très haut niveau. Je pense que vous parlez d'une implémentation SOAP.

Si le service Web est plus que trivial, oui, un cadre vous facilitera la vie.En dehors de Spring-ws (que j'aime aussi), vous pouvez google pour CXF et Axis2 et vous trouverez des tonnes d'exemple comment écrire un client SOAP. Mais bien sûr, vous pouvez écrire l'appel de service Web plutôt brut, si vous êtes en mesure de créer l'enveloppe SOAP manuellement (utilisez SoapUI pour générer des enveloppes de test est un bon début ..).

Ensuite, jetez un oeil à: this page, il a un exemple sur la façon de faire un appel SOAP sur HTTP sans aucun cadre à portée de main. Bien sûr, puisque vous utilisez SSL, vous devriez plutôt faire référence à une adresse "https: //".

+0

Petter, Merci pour la réponse. J'ai été en mesure de faire fonctionner mon programme, essentiellement en faisant ce que vous avez suggéré, mais à l'exécution via System.setProperty pour les valeurs correctes. – mitchmcc

+0

Nice, comment définir les propriétés est juste une question de ce qui est le plus pratique. –

Questions connexes