Institut Galilée Programmation et Logiciels sûrs
Année 2016-2017 Master 2 PLS
TP WEBSERVICES
Résumé
L’objectif de ce TP de savoir réaliser un service web SOAP à l’aide de Netbeans en utilisant dans un premier la
librairie intégrée Metro, et dans un second, la librairie Apache CXF associée à Spring.
Dans chaque cas, on implémentera une couche de sécurité.
Ce TP non exhaustif n’a pas pour vocation de tout étudier et tout connaître sur les services web, mais plutôt de
permettre à l’étudiant de prendre en main progressivement une partie de la technologie soap.
1 Pré-requis
1.1 L’environnement de développement
Pour ce TP, l’environnement de développement utilisé est Netbeans, entre autre pour le fait que l’IDE intègre
le moteur de base de données Derby. Cet environnement est disponible dans les salles de TP de Galilée. Dans tous
les cas, le lecteur pourra trouver une version Linux de ces applications à cette adresse : http ://www-lipn.univ-
paris13.fr/ fortier/enseignement/applications/
1.2 Les librairies nécessaires
Les librairies nécessaires sont téléchargeables à cette adresse :
http ://www-lipn.univ-paris13.fr/ fortier/Enseignement/Webservices/TP/
Il s’agit :
de certaines librairies Spring :
— org.springframework.beans-3.0.6.RELEASE.jar
— org.springframework.context-3.0.6.RELEASE.jar
— org.springframework.core-3.0.6.RELEASE.jar
— ...
de la librairie Apache de journalisation : commons-logging-1.1.1.jar
de la librairie Apache CXF
1.3 SOAPUI
Pour tester les services web, il existe un excellent outil développé en Java dédié "Soapui" que l’on peut trouver :
http ://www.soapui.org
Il permet entre autres de :
— debugger
d’effectuer des tests uni-
taires
automatiser des tests
tester la montée en charge
visualiser les messages soap
1
2 METRO
Netbeans intègre la gestion des webservice avec la librairie Metro. Son utilisation est donc extrêmement simple et
permet de créer très rapidement un service web opérationnel.
Le but de ce premier TP est de créer un web service qui calcule la somme de deux nombres fournis en paramètres.
Pour illustrer la méthode d’utilisation du web service, nous récupérerons la donnée “somme” dans une pre-
mière application en java, puis dans une seconde application J2EE. Nous aurions également pu créer une application
Php en utilisant le serveur web Apache et l’extension php-soap.
2.1 Le service web
Créer une application Java Web Application de nom WS_METRO
Créer un nouveau webservice : New >Web Service
nom : calcul_ws
package : m2pls
Passer sur la vue design et créer une nouvelle opération "add" avec deux attributs entiers
Passez sur la vue “source“, et modifiez la méthode add nouvellement comme dans le cours
Déployez le projet
Passez au test du service web, cliquez droit sur le Web Service "calcul_ws" ”Test web service“
Si vous utilisez Glassfish, vous pouvez directement tester le service web en entrant les deux valeurs à additionner.
Remarque : le numéro de port d’accès au Web Service (ici 8080) peut varier en fonction de la configuration de votre
serveur d’applications
visualiser le descripteur wsdl : http ://localhost :8080/TP_WS_METRO/calcul_wsService ?WSDL
Ce fichier va maintenant pouvoir être utilisé pour déployer des applications utilisant le web service.
2.2 Un client Java
Pour tester le service web créé, on va créer une première application Java qui va l’interroger.
Dans Netbeans, créer un projet Java de nom : WS_METRO_Client
Créer un nouveau service client : New >Web Service Client
wsdl URL : http ://localhost :8080/WS_METRO/calcul_wsService ?WSDL
Vérifier que les méthodes du web service sont bien retrouvées
Créer un test unitaire permet de tester le webservice
Faire un ”drag’ndrop“ de la méthode add dans la méthode de test
Initialiser les deux variables i et j, par exemple à 5 et 4, renseignez le ”catch” pour afficher l’exception.
Comparer le code généré avec celui du cours
Vérifier le résultat de l’exécution
2.3 Un client Web
Créer un nouveau projet WS_METRO_Web
Créer un nouveau service client : New >Web Service Client
wsdl URL : http ://localhost :8080/WS_METRO/calcul_wsService ?WSDL
Comme précédemment, on peut constater que le webservice est bien retrouvé
Faire un “drag’ndrop” de la méthode add du ws dans le fichier index.jsp
2
Comme précédemment, initialiser les deux variables i et j, par exemple à 5 et 4, renseignez le “catch” pour
afficher l’exception
Exécuter le projet et vérifier le résultat
2.4 Sécuriser le Webservice
Le but de ce TP est d’ajouter une couche de sécurité au service web créé à l’étape 1.
Il est nécessaire d’utiliser Glassfish qui intègre différents outils de sécurisation comme le chiffrage SSL (par défaut
sur le port 8181), la gestion de la sécurité des messages Soap... Le serveur d’applications utilise la notion de domaine
dans lequel se trouve l’ensemble de l’environnement nécessaire à l’exécution d’applications web. A son initialisation,
le domaine comprend des certificats utilisables pour sécuriser les transferts. En fonction des configurations du
domaine de travail, il pourra être nécessaire de modifier les certificats utilisés par glassfish via la commande keytool
(http ://docs.oracle.com/javase/1.3/docs/tooldocs/win32/keytool.html).
Dans le cas présent, nous allons utiliser le mode "Username Authentication with Symmetric Keys".
Il s’agit d’utiliser l’utilisateur créé lors de l’initialisation du domaine Glassfish, ainsi que les certificats pour le client
et le serveur.
2.4.1 Sécurisation du service
Dupliquer le projet WS_METRO en WS_METRO_Secure, et s’assurer que le projet fonctionne
Cliquer droit sur calcul_ws "Edit Web Service Attributes"
Cocher "Secure Service"
— Modifier la location du keystore pour trouver celui du domaine Glassfish (le mot de passe par défaut est
changeit), et sélectionnez l’alias "s1as"
3
Les tests sur ce service web sécurisé ne fonctionnent pas, mais le fichier de description se trouve : http ://local-
host :8080/WS_METRO_Secure/calcul_wsService ?WSDL
2.4.2 Sécurisation du client
Créer un client Java de nom WS_METRO_Secure_Client
Tester le webservice securisé précédent
Le service web n’est utilisable que par certificat
Cliquer droit sur calcul_ws "Edit Web Service Attributes"
Cocher/décocher "use development defaults"
Cela active la librairie Metro au niveau du client et renseigne l’utilisateur créé lors de l’initialisation du domaine
Glassfish wsitUser
Remarque : la création d’un autre utilisateur se fait via :
# <DOMAINE_HOME>/asadmin create-file-user –groups wsit wsitUser
Modifier le truststore en choisissant celui utilisé par Glassfish cacerts.jks (mot de passe par défaut est changeit),
et l’alias "s1as"
Exécuter le client et vérifier les transferts
4
3 Apache CXF
Dans cette partie, nous allons étudier le framework de développement de webservice Apache CXF. Pour simplifier
sa mise en œuvre, nous utiliserons Spring.
Objectif : créer un webservice retournant la somme de deux nombres.
3.1 Le service web
Créer une application web dans Netbeans de nom WS_CXF
Ajouter les librairies nécessaires contenues dans l’archive Librairies.tar.gz
Créer une classe Calcul dans le package entite contenant deux attributs entiers i et j, ainsi que les accesseurs
Créer l’interface service.CalculService contenant le prototype d’une méthode d’ajout de deux entiers
Créer la classe service.CalculService implémentant l’interface précédente
Créer le fichier de configuration de Spring applicationContext.xml à la racine du classpath des sources
Modifier le fichier web.xml
Déployer l’application et visualiser le descripteur WSDL généré
http ://localhost :8080/WS_CXF/ICalculService ?wsdl
3.2 Un client Java classique
Sans CXF
Créer une application Java de nom WS_CXF_Client
Créer le service web client à partir du WSDL généré précédemment
Comme pour Metro, tester la méthode proposée par le webservice individuService
Analyser les sources générées (jax-ws) dans le package service
Avec CXF
Ajouter les libraires CXF au projet
Ajouter la méthode de test
Analyser les résultats
Avec CXF et Spring
Ajouter les libraires CXF au projet
Ajouter la méthode de test
Créer le fichier de configuration de Spring applicationContext.xml à la racine du classpath des sources
Tester les deux appels de Bean Spring possibles
3.3 Enrichissement du service web
— Ajouter une nouvelle méthode dans l’interface ICalculService permettant de faire la soustraction de deux
nombres
Implémenter cette méthode qui doit retourner un entier
Redéployer le webservice
Analyser les sources générées
Ajouter une méthode de tests au client
3.4 Sécurisation du webservice
Pour ce TP, on va partir des projets WS_CXF et WS_CXF_Client que l’on va dupliquer en WS_CXF_Secure
et WS_CXF_Client_Secure.
3.4.1 Sécurisation du service
Dans le projet WS_CXF_Secure, modifier le fichier de configuration de Spring comme présenté dans le cours
en ajoutant les intercepteurs nécessaires pour implémenter WS-security
Créer le validateur de token en implémentant la méthode "verifyPlaintextPassword"
Relancer le service web et vérifier la disponibilité de son descripteur
http ://localhost :8080/WS_CXF_Secure/ICalculService ?wsdl
3.4.2 Sécurisation du client
Dans le projet WS_CXF_Spring_Secure, modifier le fichier de configuration de Spring en ajoutant les inter-
cepteurs nécessaires pour implémenter WS-security
Créer le callbackHandler test.PWCallbackHandler fournissant le couple identifiant / Mot de passe nécessaire à
la connexion au service web
5
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !