1. Introduction
Pr. Abderrahim EL QADI
2. Technologies réparties
Département Informatique
3. Caractéristiques et Architectures des Services Web
EST de Salé- Université Mohammed V de Rabat
4. Protocole de communication SOAP
5. Langage de description WSDL
6. L'annuaire des services UDDI
LP : IAM
7. Mise en œuvre de l’architecture
A.U. : 2017/2018
– Services de tracking "Smart Car" du Maroc Telecom, qui rend la 2. Technologies réparties
voiture connectée et intelligente (Smart): − RMI (Remote Method invocation): - Pour manipuler un objet distant, un client
récupère sur sa machine une représentation
• Géolocalisation: permet de localiser
de l'objet appelé talon/souche (stub): ce
en temps réel les déplacements de voiture talon implante l'interface de l'objet distant
• Reporting: donne un historique des différents et c'est via ce talon que le client pourra
trajets effectués par la voiture. invoquer des méthodes sur l'objet distant.
Une telle invocation sera transmise au
• Comportement de conduite: permet de suivre le comportement
serveur (le protocole TCP est utilisé) afin
de conduite du conducteur, en affichant chaque semaine un score d'en réaliser l'exécution.
de conduite et son évolution dans le temps. - Du côté du serveur un skeleton/squelette
• Stub (Souche) : Fait la transition entre l’appel
a en charge la réception des invocations
du client et le réseau
distantes, de leur réalisation et de l'envoi
• Skeleton (Squelette) : Fait la transition entre
des résultats.
le réseau et l’appel vers l’Objet Serveur.
Web Services -6- A. El Qadi Web Services -7- A. El Qadi
− CORBA (Common Object Request Broker Architecture) − Ces technologies ont généralement échoué en raison de la diversité
des plates-formes utilisées dans les organisations et aussi parce que
est une plate forme :
- issu de l’OMG (Object Management Group) leur usage n'était pas adapté à Internet (problème de passage à
- Objectif : créer une infrastructure à objets ouverte. travers des FireWalls, etc.) d'où la lenteur, voire l'absence de
- architecture définit la forme des composants et leur réponses sur ce réseau.
mode d’interopérabilité (IDL) (Interface Definition
Language − Les applications réparties fondées sur ces technologies offrent des
- les clients connaissent l’interface de l’objet.
solutions caractérisées par un couplage fort entre les objets.
- son mode de fabrication est transparent pour ses clients
potentiels
- la machine et son système d’exploitation ne sont pas
connues des clients.
− Web services: permettent néanmoins un couplage moins fort. • le couplage faible des applications (évolution indépendante) et leur
• L'utilisation des technologies standards du Web coopération via des interfaces de haut niveau d’abstraction (services
développement d'applications réparties sur Internet, et permet − La plus importante innovation des Services Web est l'utilisation de
d'avoir des applications très faiblement couplées. XML (eXtensible Markup Language) comme EDI.
− Un service Web possède les caractéristiques suivantes : • l'intégration d'application en implémentant des services Web
• il est accessible via le réseau ; produit des systèmes faiblement couplés, le demandeur du
• il dispose d'une interface publique (ensemble d'opérations) service ne connaît pas forcément le fournisseur.
décrite en XML ; Ce dernier peut disparaître sans perturber l'application cliente qui
• ses descriptions (fonctionnalités, comment l'invoquer et où le trouvera un autre fournisseur en cherchant dans l'annuaire.
− XML-RPC : est un protocole simple utilisant XML pour − WSDL : (Web Services Description Language) est un langage de
effectuer des messages RPC. Les requêtes sont écrites en XML et description standard.
envoyées via HTTP POST. Les requêtes sont intégrées dans le • C'est l'interface présentée aux utilisateurs.
corps de la réponse HTTP. • il est basé sur XML et permet de décrire de façon précise les détails
RPC (Remote procedure call): protocole d'appel de procédures à distance). concernant le service Web tels que les protocoles, les ports utilisés,
les opérations pouvant être effectuées, les formats des messages
d'entrée et de sortie et les exceptions pouvant être envoyées.
Web Services -16- A. El Qadi Web Services -17- A. El Qadi
− UDDI: (Universal Description, Discovery and Integration) est 4. Protocole de communication SOAP
un annuaire de services. Il fournit l'infrastructure de base pour la
− SOAP (Simple Object Access Protocol) a pour principal objectif d'assurer la
publication et la découverte des services Web. Les informations communication entre machines.
qu'il contient peuvent être séparées en trois types : − est basé sur XML
• les pages blanches qui incluent l'adresse, le contact et les − est un protocole permet d'appeler une méthode RPC et d'envoyer des messages
identifiants relatifs au service Web ; aux machines distantes via HTTP. Ce protocole permet de fournir au client une
• les pages jaunes qui identifient les secteurs d'affaires relatifs au grande quantité d'informations récupérées sur un réseau de serveurs tiers.
service Web ;
• les pages vertes qui donnent les informations techniques.
a. SOAP envelope (enveloppe) est l'élément de base du message − Deux autres espaces de noms fortement utilisés dans SOAP sont
SOAP. Il contient la spécification des espaces de désignation « xsd » et « xsi » :
(namespace) et du codage de données. • xsd namespace précise que les balises proviennent de la définition
c. SOAP body (corps) est un élément obligatoire dans le message Exemple de Bloc Header et Body:
SOAP. SOAP Request : SOAP Response :
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-
− Il contient l'information destinée au receveur. <S:Envelope 8"?><S:Envelope
− Le corps (body) doit fournir le nom de la méthode invoquée par xmlns:S="http://schemas.xmlsoap.org/soap/envel xmlns:S="http://schemas.xmlsoap.org/soap/envelop
ope/"> e/">
une requête ainsi que les paramètres associés a celle-ci. <S:Header/> <S:Body>
<S:Body> <ns2:sommerResponse
<ns2:sommer xmlns:ns2="http://TP/"> xmlns:ns2="http://TP/">
<a>3</a> <return>8</return>
<b>5</b> </ns2:sommerResponse>
</ns2:sommer> </S:Body>
</S:Body> </S:Envelope>
</S:Envelope>
− La balise <soap:fault> peut contenir quatre autres balises • soap:VersionMismatch : se produit lorsque les versions des
protocoles SOAP utilisés par le client et le serveur sont différentes.
facultatives :
• soap:MustUnderstand : est générée lorsqu'un élément dans l'en-
• faultcode : contient un code indiquant la nature du problème.
tête ne peut pas traiter alors qu'il est marqué comme obligatoire.
• faultstring : une explication en langage naturel.
• faultactor : indique le service qui a généré l'erreur.
• detail : définition précise de l’erreur; Il contient souvent des valeurs
de variables au moment de l'échec.
<message name="IOException">
<part name="fault" element="tns:IOException"/>
</message>
– PortTypes : décrit un ensemble d'opérations. Chaque opération a – Opération : c'est la description d'une action exposée dans le port.
zéro ou un message en entrée, zéro ou plusieurs messages de sortie • L'élément <operation> est analogue à un appel de méthode en Java.
ou d'erreurs. La différence est que seulement trois messages sont autorisés dans
<wsdl:portType name="descriptionPersonnes" > - Input Message : définit les données que le service Web s'attend à
<wsdl:operation name="getPersonne" > recevoir.
…
- OutPut Message : définit les données que le service Web prévoit
</wsdl:operation>
<wsdl:operation name=“setPersonne" > d'envoyer en réponse.
… - Fault Message : définit les messages d'erreurs qui peuvent être retournés
</wsdl:operation>
</wsdl:portType> par le service Web.
On y trouve essentiellement le nom et la description textuelle des − L'interface UDDI : est définie sous forme de documents UDDI et
services ainsi qu'une référence à l'organisation proposant le implémentée sous forme de service Web SOAP.
service et un ou plusieurs « bindingTemplate ». Elle est composée des modules suivants :
- BindingTemplate (modèle de rattachement) : Ce sont les pages • Interrogation inquiry : cette interface permet de rechercher des
vertes de l'annuaire UDDI. informations dans un répertoire UDDI et de lire les différents
Ils contiennent notamment une description, la définition du point enregistrements suivant le modèle de données UDDI.
d'accès (une URL) et les éventuels « tModels » associés. • Publication : cette interface permet de publier des informations dans un
- tModel (index) : se sont les descriptions techniques des services. répertoire UDDI conformément à son modèle de données.
• Sécurité : cette interface est utilisée pour obtenir et révoquer les jetons
d'authentification nécessaires pour accéder aux enregistrements protégés
dans un annuaire UDDI.
Exemple 1 : Création d'un Service Web en utilisant le fournisseur de services L’environnement d’exécution et de déploiement des services web que nous utilisons est l’outil
« Axis ».
Web Axis
Vous noterez qu’il n’est pas nécessaire de compiler le source java.
Vous êtes désormais en mesure d’accéder à votre service à l’URL suivante :
a. Création du web service http://localhost:8082/axis/Sommer.jws
La première étape consiste à définir la classe du service web qui retournera au client la somme
de 2 entiers. There is a Web Service here
public class Sommer { Click to see the WSDL
public int getsomme(int a, int b) {
return a+b;
}
} Si vous cliquez sur ce dernier lien, vous verrez la définition « WSDL » (générée automatiquement
par « Axis ») de votre service web.
Attention, vous devez sauvegardez votre classe sous le fichier portant le même nom de la classe
http://localhost:8082/axis/Sommer.jws?wsdl
et suffixé par « jws » ! Ici, le fichier de sauvegarde sera donc : « Sommer.jws ». dans le dossier
C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\axis
b- Déploiement du web service
La deuxième étape consiste à déployer le service au sein d’un fournisseur de services web.
c- Test du web service Exemple 2 : Création d'un Web Service en utilisant Outils NetBeans
Pour exécuter une méthode de votre service et obtenir la réponse « SOAP » correspondante,
vous tapez l’expression suivante dans votre navigateur :
http://localhost:8082/axis/Sommer.jws?method=getsomme&a=4&b=6
Par rapport à l’expression précédente, vous précisez ici le nom de la méthode à exécuter, sous la
forme de la valeur de l’attribut « method » et vous précisez les valeurs des paramètres a et b.
La réponse affichée est le contenu « SOAP », c’est-à-dire un fichier « XML » dont voici un extrait :
- Dans Eclipse, sélectionner le dossier racine du projet Web Service (Calculatrice.wsdl), et utiliser le
menu contextuel pour Exporter sous la forme d’une Web Archive. Choisir le dossier webapps de
tomcat pour enregistrer l’archive. Ajouter la clause using concernant la web référence générée.
- Démarrer serveur Tomcat, using AppelWS_Calcul.ServiceReference1;
- Sous Visual Studio.Net, créer un nouveau projet de type « Visual C# / Windows / Windows
Application » nommé AppelWSCalcul : Dans le corps de la méthode, saisir le code de l'appel du service web.
- Sélectionner l'option « Add new DataSource » du menu principal « Data » Exemple de code:
- Sélectionner « Web Service » et cliquez sur bouton « Next ». private void button1_Click(object sender, EventArgs e)
{
CalculatriceClient cs = new CalculatriceClient();
int a = int.Parse(textBox1.Text);
int b = int.Parse(textBox2.Text);
int resultat = cs.additionner(a, b);
label4.Text = "" + resultat;
}
8.2. Sécurisation de l'application (TP n°5) • Contrôle de la sensibilité des informations remontées en cas d’erreur
8.2.1. WSDL: L’accès à la WSDL doit être sécurisé et n’être autorisé 8.2.4. Protection contre le rejeu: Les Services Web n’intègrent pas
qu’aux clients identifiés : Filtrage IP des clients. par défaut de mécanismes contre le rejeu. Le développeur doit intégrer
des mécanismes anti rejeu sur les fonctions sensibles du Service Web.
8.2.2. Contrôle des entrées: Chaque donnée en entrée doit faire
• Protection applicative contre le rejeu
l’objet d’un contrôle afin de s’assurer qu’elle correspond au type attendu
• Protection système contre le rejeu
et qu’elle respecte la syntaxe attendue :
• Valider la taille, le format, le type des données en entrée,
• Valider la taille, la longueur et la profondeur des messages XML parsés.
8.2.3. Gestion des exceptions: Les erreurs possibles du Service
Web doivent être interceptées et gérées afin de ne pas fournir
d’informations potentielles à un attaquant : Gestion des exceptions
(Try/Catch),
Web Services -62- A. El Qadi Web Services -63- A. El Qadi
8.3. Sécurisation des échanges • Références
8.3.1. Confidentialité: Les échanges SOAP, par exemple, doivent − Services Web avec J2EE et .NET : Conception et implémentations;
être sécurisés et les messages chiffrés : Rampart, WS-Security, TLS, Libero M. , Christian B., Xavier L.; Edition Eyrolles.
IPSec − Book Web Data Management and Distribution,
8.3.2. Intégrité: Les parties critiques des messages SOAP doivent http://webdam.inria.fr/textbook
être signées afin d’en garantir leur exactitude : Rampart, WS-Security, − http://apiacoa.org/teaching/webservices/index.fr.html
TLS, IPSec − www.labri.fr/perso/xblanc/data/OldCourses/XB4-WebServices.ppt
8.3.3. Disponibilité: Les Services Web critiques en disponibilité − https://www.ibisc.univ-evry.fr/~tmelliti/cours/CPAR/cours6.pdf
doivent faire l’objet de mesures adaptées supportées par des composants
d’infrastructure et applicatifs : Redondance de l’infrastructure, WS-
Reliability.