[DEV] WS-Security - Username token - Client CXF

Tags , , , ,
31 juillet 2008 par Yohann CIURLIK

WS-Security permet de sécuriser facilement des web services. Il permet entre autre :

  • Une authentification par user/password (token) entre les services,
  • Un encryptage d’une partie ou de la totalité d’un message,
  • De signer des messages,
  • D’horodater des messages.

Apache CXF est un framework permettant d’implémenter les standards JAX-WS pour créer des web services en Java en se reposant sur WSS4J. Il s’intègre également avec Spring, Aegis, RESTful, et WS-*. Il est aujourd’hui dans sa version 2.1.1.

securityalert

Vous trouverez sur le wiki cxf un complément d’information et un exemple d’implémentation de WS-Security via CXF. Il existe également un exemple utilisant XWSSS avec Spring.

Une des sécurité la plus basique est celle fournie par l’authentification via Username Token.

Je vais donc vous présenter un moyen simple d’ajouter l’authentification via Username Token dans les en-têtes Soap Header de votre client web service en utilisant CXF.

1 – Le XML en entrée d’un web service contient l’en-tête sécurisé :

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <SOAP-ENV:Envelope
  3.     xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
  4. <SOAP-ENV:Header>
  5. <wsse:Security xmlns:wsse="…"
  6. SOAP-ENV:mustUnderstand="1">
  7. <wsse:UsernameToken xmlns:wsu="…"
  8. wsu:Id="XWSSGID-1172860158358-935964365">
  9. <wsse:Username>user</wsse:Username>
  10. <wsse:Password Type="…#PasswordText">password</wsse:Password>
  11. </wsse:UsernameToken>
  12. </wsse:Security>
  13. </SOAP-ENV:Header>
  14. <SOAP-ENV:Body>
  15. <echoRequest
  16. xmlns="…">Hello</echoRequest>
  17. </SOAP-ENV:Body>
  18. </SOAP-ENV:Envelope>

2 – Vous pouvez ajouter facilement cette en-tête sécurisée en Java directement dans le code du client Web Service (pouvant être généré via la commande wsdl2java de CXF/Axis).

Voici un exemple de code client :

  1. WebService_Service service = new WebService_Service();
  2. WebService port = service.getPort(WebService.class);

A la suite, il suffit d’ajouter un proxy client qui va prendre en charge les en-têtes (SOAP Header) sécurisées :

  1. Client client = ClientProxy.getClient(port);
  2. Endpoint cxfEndpoint = client.getEndpoint();

Puis instancier une HashMap qui contiendra les propriétés de sécurité :

  1. Map outProps = new HashMap();

On ajoute ensuite l’intercepteur qui prendra en charge les propriétés définies :

  1. WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
  2. cxfEndpoint.getOutInterceptors().add(wssOut);
  3. cxfEndpoint.getOutInterceptors().add(new SAAJOutInterceptor());

Et pour finir on ajoute les propriétés de sécurité (user/password) dans la HashMap :

  1. outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
  2. // Specify our username
  3. outProps.put(WSHandlerConstants.USER, “ws-client”);
  4. // Password type : plain text
  5. //outProps.setProperty(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
  6. // for hashed password use:
  7. //properties.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_DIGEST);
  8. outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_DIGEST);
  9. // Callback used to retrive password for given user.
  10. outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS, ClientPasswordHandler.class.getName());

Comme vous pouvez le constater, le mot de passe n’est pas défini ici. La dernière ligne (PW_CALLBACK_CLASS) intervient alors. C’est une fonction de callback qui va se charger de l’ajout du mot de passe dans l’en-tête.

Voici donc cette fonction de callback :

  1. public class ClientPasswordHandler implements CallbackHandler {
  2.   public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
  3.     WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
  4.     // set the password for the outbound message.
  5.     pc.setPassword(”password”);
  6.   }
  7. }

Avec ce code, vos en-têtes seront générées automatiquement depuis vos clients (Java) web service.

Cet article vous a plu ? Abonnez-vous au blog par mail ou flux RSS : vous recevrez automatiquement les nouveaux billets !

Quelques publications sur la SOA

Tags , , ,
10 juillet 2008 par Yohann CIURLIK

L’architecture orientée services (calque de l’anglais Service Oriented Architecture, SOA ou AOS) est une forme d’architecture de médiation qui est un modèle d’interaction applicative qui met en œuvre des services (composants logiciels).

image

Aujourd”hui, je vous propose 3 publications différentes sous forme de livres blancs (format PDF). Ils viennent en complément de publications comme celle de Mysql et Adobe sur mon précédent billet sur les Livres blancs et les datawarehouse.

Architectures Orientées Services : Gagner en rapidité, fléxibilité et reactivité par Capgemini

image Un guide de 12 pages bien illustré. Vous pouvez également retrouver d’autres publications ici.

Architecture Orientée Services (SOA) par Octo

image Là, c’est du lourd! 80 pages très illustrès et couvrant un large spectre via Octo Publications.

SOA et urbanisme par Unilog

image Ici encore, 107 pages vous attendent pour découvrir le monde des SOA et comparer les différents produits du marché. En exclusivité ici car le lien fourni par Unilog ne fonctionne plus. Vous poourrez aller jeter un coup d’oeil à leurs publicitations sur le site de Logica.

Je vous propose également de découvrir un site dédia aux SOA : soa.orchestranetworks.com et un blog de qualité SOAPlanet.net.

Cet article vous a plu ? Abonnez-vous au blog par mail ou flux RSS : vous recevrez automatiquement les nouveaux billets !

soapUI, un outil de test pour soa, soap et web service

Tags , , ,
10 juin 2008 par Yohann CIURLIK

soapui-logo soapUI est LE logiciel à possèder lorsque vous souhaitez tester des web services! En fait, c’est le leader dans son domaine et c’est le plus utilisé. Un outil open source et gratuit pour effectuer des tests comme :

  • L’inspection, l’invocation et le développement de web services,
  • La simulation et l’écoute de web services,
  • Des tests fonctionnels de charge sur les web services,

image

Vous pouvez télécharger l’application ou l’utiliser directement via le déploiement Web Start.

La version soapUI 2 béta 2 apporte son grand lot de fonctionnalités. Vous en verrez tout un tas sur le site de soapUI. Un must to have !

Cet article vous a plu ? Abonnez-vous au blog par mail ou flux RSS : vous recevrez automatiquement les nouveaux billets !

Blog orienté SOA & Frameworks Ajax

Tags , , , , , , ,
9 juin 2008 par Yohann CIURLIK

Je tenais à vous avertir de l’ouverture d’un tout nouveau blog orienté vers le développement Java et notemment tout ce qui touche de loin ou de près aux nouvelles technologies autour de SOA, REST, Ajax, RIA, Web Services, …

SOAPlanet est un blog tenu par Hugo, un collègue de Fac avec qui j’ai passé quelques années.

J’apprècie le thème qu’il à choisi pour la rédac de ses articles et j’ai même découvert Dojo.E, un framework Ajax bien sympa.

image

Dojo.E est une surcouche de l’ensemble d’outils Javascript Dojo qui permet de décrire des interfaces graphiques en XML. Un format qui reste très verbeux mais plus simple que le JSON dans sa syntaxe. Il est tout de même plus simple de voir la non fermeture d’un balise XML que de voir une virgule en trop en JSON.

Une double découverte pour plaisir double. A consommer sans modérations !

Cet article vous a plu ? Abonnez-vous au blog par mail ou flux RSS : vous recevrez automatiquement les nouveaux billets !

Livre blanc humouristique sur la SOA

Tags , ,
30 avril 2008 par Yohann CIURLIK

Cette semaine, je vous propose un livre blanc plutôt original sous forme de BD : “A la quête de la SOA “. la BD à été réalisée par l’illustrateur François Cointe. Cette image à été extraite du livre blanc à titre illustratif.

Humour SOA livre blanc

Rédigé par Angélica Reyes, responsable Marketing chez Microsoft. Il présente le pourquoi et le comment d’une architecture orientée ainsi que les différents composants d’une plateforme afin de :

Mieux aligner le SI et les métiers, faciliter l’accès à l’information et rendre les processus
plus fluides, voilà les véritables questions autour d’une démarche SOA.

Un livre blanc plutôt orienté Microsoft mais qui de qualité et très accessible.

Cet article vous a plu ? Abonnez-vous au blog par mail ou flux RSS : vous recevrez automatiquement les nouveaux billets !


sideBarQA