You are on page 1of 48

W

EE
BB

WEBSERVICES
XML
SOAP, WSDL
RPC avec SOAP
AXIS
SOA

S
EE
RR
VV
II
CC
EE
SS

FABRICE
ABRICE CLARI
LARI--

FABRICE.CLARI@ZALTANA.FR
FABRICE.CLARI@ZALTANA.FR

Sommaire

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

Pr-requis
o XML
o Espaces de noms (namespaces)
o XML Schema

Services Web : dfinition


SOAP
Les protocoles de communication
RPC avec SOAP
WSDL
UDDI
Un scnario
Les diteurs
La scurit des services web
AXIS
SOA

Introduction XML (1/4)


Afin de bien comprendre le fonctionnement des services web, il est important
davoir quelques connaissances sur le langage XML et XML Schema.

XML est un langage balis qui est rapidement devenu le standard pour
lchange de donnes ;

EE
BB

Les donnes sont identifies grce des tags (tout tag ouvert doit
imprativement tre ferm) ;

A la diffrence de HTML, les tags XML identifient des donnes et non un


affichage.

EE
RR
VV
II
CC
EE
SS

Exemple :

<?xml version="1.0" encoding="ISO-8859-1" ?>


<album>
<artiste>Jean-Jacques Goldman</artiste>
<titre>Chansons pour les pieds</titre>
<date_de_parution>2001</date_de_parution>
<chansons>
<titre piste='1'>Ensemble</titre>
<titre piste='2'>Et l'on y peut rien</titre>
<titre piste='3'>Une poussire</titre>
</chansons>
<prix euros='20' />
</album>

Introduction XML (2/4)


Entre deux tags XML ouvert/ferm, se trouve un lment ;

W
EE
BB

Un tag XML peut contenir dautres tags, ce qui permet une reprsentation
hirarchique des donnes ;
Un tag peut contenir un (voire plusieurs) attribut(s) (piste dans le tag titre
de lexemple prcdent) ;
Tous les tags ouverts doivent tre ferms ;

S
EE
RR
VV
II
CC
EE
SS

Un tag vide est valide (<prix euros='20' /> par exemple) ;


Exemple de commentaires en XML : <!-- commentaire --> ;
Un document XML commence par un prologue :
<?xml version="1.0" encoding="ISO-8859-1" ?>
Diffrents types de parseur XML existent : DOM (Document Object Model),
qui construit un arbre en mmoire du document, et SAX (Simple API to XML) qui
associe un vnement chaque balise lue.
Astuce : pour vrifier la validit dun document XML, vous pouvez louvrir avec
Internet Explorer (version suprieure ou gale la 5.5) qui dispose dun parseur
XML. Il affichera une erreur si le document est syntaxiquement faux.

Introduction XML (3/4)


La notion despace de noms (namespace) est trs utilise dans les services web.
Les namespaces permettent :

de qualifier de manire unique des lments et des attributs ;


la dfinition de balises modulaires.

EE
BB

Exemple

Un magasin de disques et de livres peut caractriser son stock par deux


documents XML :

EE
RR
VV
II
CC
EE
SS

Un dcrivant ses disques

Un dcrivant ses livres

<?xml version="1.0" encoding="ISO-8859-1" ?>


<albums>
<album>
<artiste>Jean-Jacques Goldman</artiste>
<titre>Chansons pour les pieds</titre>
<date_de_parution>2001</date_de_parution>
<chansons>
<piste n='1'>Ensemble</piste>
<piste n='2'>Et l'on y peut rien</piste>
<piste n='3'>Une poussire</piste>
</chansons>
<prix euros='20' />
</album>
</albums>

<?xml version="1.0" encoding="ISO-8859-1" ?>


<livres>
<livre>
<auteur>Jean-Marie Chauvet</auteur>
<titre>Services Web avec SOAP, WSDL, </titre>
<date_de_parution>2002</date_de_parution>
<editeur>eyrolles</editeur>
<prix euros=39' />
</livre>
</livres>

Problme : la balise <titre> contient deux types dinformations.

Introduction XML (4/4)


Lespace de nom (xmlns) permet de crer un nom unique pour chacune des
balises <titre>, en associant un identifiant unique (URI, Uniform Ressource
Indentifier) un nom.
<?xml version="1.0" encoding="ISO-8859-1" ?>

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

<magasin
xmlns:magasin="http://magasin.org"
xmlns:album="http://album.org"
xmlns:livre="http://livre.org">

Ces URI ne sont pas vrifies. En


gnral, elles pointent sur la
grammaire de lespace de noms.

<magasin:albums>
<magasin:album>
<album:artiste>Jean-Jacques Goldman</album:artiste>
<album:titre>Chansons pour les pieds</album:titre>
<album:date_de_parution>2001</album:date_de_parution>
<album:chansons>
<album:piste piste='1'>Ensemble</album:piste>
<album:piste piste='2'>Et l'on y peut rien</album:piste>
<album:piste piste='3'>Une poussire</album:piste>
</album:chansons>
<album:prix euros='20' />
</magasin:album>
</magasin:albums>
<magasin:livres>
<magasin:livre>
<livre:auteur>Jean-Marie Chauvet</livre:auteur>
<livre:titre>Services Web avec SOAP, WSDL, </livre:titre>
<livre:date_de_parution>2002</livre:date_de_parution>
<livre:editeur>eyrolles</livre:editeur>
<livre:prix euros='39' />
</magasin:livre>
</magasin:livres>
</magasin>

Introduction XML Schema

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

XML Schema prcise comment reprsenter en XML une structure de donnes. A


la diffrence des DTD, qui ne dfinissent que les imbrications des lments entre
eux, XML Schema dfinit les imbrications ainsi que les types des donnes
(lments et attributs).
Ainsi, le XML Schema dfinissant lexemple <livre> (simplifi) est :
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
<xsd:element name="livre">
<xsd:complexType>
<xsd:sequence>
<xsd:element name=" auteur" type="xsd:string"
minoccurs="1" maxoccurs="1"/>
<xsd:element name="titre" type="xsd:string"/>
<xsd:element name="date_de_parution" type="xsd:string"/>
<xsd:element name="editeur" type="xsd:string"/>
<xsd:element name="prix">
<xsd:complexType>
<xsd:attribute name="euros"
type="xsd:int"
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>

Web Services : une dfinition


De multiples dfinitions de la notion de Web Services existent, mais sont
gnralement trop vagues ou trop prcises.

Un groupe de travail du W3C (Web Services Architecture group, compos de


multiples membres de lindustrie) en donne une dfinition exacte :

EE
BB A web service is a software application identified by a
URI, whose interfaces and binding are capable of being
S defined, described, and discovered by XML artifacts, and
EE supports direct interactions with other software
RR applications using XML-based messages via Internet-based
VV protocols .
II
CC (source : http://www.w3c.org/2002/ws/arch/2/08/wd-wsa-arch-20020821.html#webservice)
EE
SS Cette dfinition met laccent sur lutilisation du langage XML, utilis pour dcrire
la structure des messages changs entre clients et serveurs de Services Web ;
Elle ne prcise pas quel protocole de transport doit tre utilis. Cependant, il doit
sagir dun protocole utilis sur Internet.

Les composants dun service web


Afin de mettre en uvre un service web, trois composants sont ncessaires :

un protocole pour dcrire le service : il permet entre autres- dnumrer


les mthodes disponibles, ainsi que leurs signatures (nous tudierons plus
tard WSDL) ;

EE
BB

un protocole pour crire les messages ;


un protocole de transport, afin de faire circuler les informations sur Internet.

S
EE
RR
VV
II
CC
EE
SS

http://www-106.ibm.com/developerworks/webservices/library/ws-best1/?dwzone=webservices#figure1

Le protocole SOAP (1/5)

W
EE
BB

Le protocole SOAP (Simple Object Access Protocol) est devenu le standard


pour dcrire les messages en XML entre services web. Ce dernier peut tre utilis
sur diffrents protocoles de transports. Les deux principaux protocoles utiliss
tant HTTP et SMTP.

De par sa nature, SOAP permet linter-oprabilit entre diffrents systmes


dexploitation et diffrentes plate-formes (J2EE, .NET, ).

S
EE
RR
VV
II
CC
EE
SS

10

SOAP permet de crer des applications de type distribues, en suivant le modle


RPC (Remote Procedure Call).

La grande majorit des services web utilise


le protocole SOAP.

Un message SOAP est un document XML


compos dune enveloppe qui contient
une entte et le corps du message.

Enveloppe SOAP
En-tte SOAP
(header)
Corps du message SOAP
(body)

Le protocole SOAP (2/5)


Prenons lexemple dun message SOAP appelant une mthode echoString(string), qui prend
en paramtre une chane de caractres.

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

11

Lentte (header) contient des


informations non-lies la
mthode, comme par exemple lID
de la transaction ou des
informations pour la scurit (infos
du header = gestion du contexte).
Lentte est facultative et les
lments quelle contient peuvent
avoir lattribut mustUnderstand,
qui prcise si le serveur est oblig
de connatre et traiter llment.

Le corps (body) du message


contient toutes les informations
destines au rcepteur (les
paramtres par exemple) ou
llment fault si une erreur sest
produite.

<Envelope>
<Header>
<Transaction>3<Transaction>
</Header>
<Body>
<echoString>
<arg0>Hello!</arg0>
</echoString>
</Body>
</Envelope>
Lenveloppe contient tout le message

Le protocole SOAP (3/5)


Lorsque le serveur rpond la mthode echoString(string), il ajoute Response la suite du
tag <echoString> (dune manire gnrale, il rajoute Response la suite du tag contenant
le nom de la requte.

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

<Envelope>
<Header>
<Transaction>3<Transaction>
</Header>
<Body>
<echoStringResponse>
<return>Hello!</return>
</echoStringResponse>
</Body>
</Envelope>
Si une erreur se produit, la rponse contient llment Fault (dans le corps du message).

12

Le protocole SOAP (4/5)

W
EE
BB

Une des forces de SOAP est de permettre linter-oprabilit entre diffrentes


plate-formes. Il est donc important davoir des rgles de codage des types de
donnes, afin que ces dernires puissent tre encodes/dcodes sans
difficults.
On distingue deux types de donnes :

S
EE
RR
VV
II
CC
EE
SS

13

Les donnes de types simples (une chane de caractre par exemple) ;


Les types composs : structures ou tableaux.
Dans le cas o des donnes binaires devraient transiter (comme une image par
exemple), il est galement possible denvoyer un message SOAP avec
attachement et ce grce un message MIME (Multimedia Internet Mail
Extension).
Pour pouvoir rfrencer une pice jointe depuis le corps du message SOAP, une
URI est utilise, faisant rfrence la pice jointe.

Le protocole SOAP (5/5)

Les messages prcdents prsentaient SOAP sans lutilisation des espaces de


noms, obligatoires daprs les spcifications du protocole.

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

xsi correspond au namespace des types de donnes connus ;


xsd correspond au namespace du schema du document ;
soapenv correspond au namespace de lenveloppe (utilis pour la gestion de la
version SOAP).
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:echoStringResponse
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="http://soapinterop.org/">
<return xsi:type="xsd:string">Hello!</return>
</ns1:echoStringResponse>
</soapenv:Body>
</soapenv:Envelope>

14

La couche de transport (1/6)


Comme nous lavons vu prcdemment, la dfinition ne dfinit pas une couche
de transport particulire. Le protocole SOAP quant lui nest pas dpendant
dun transport particulier (dans sa version 1.0 il ne pouvait circuler que sur HTTP ;
cela a t corrig dans la version 1.1).

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

Actuellement, deux couches de transport sont frquemment utilises (HTTP tant


le plus courant) :
HTTP, lors dappels synchrones ;
SMTP, lors dappels asynchrones.
Les spcifications de SOAP ne prcisant pas de protocole particulier, on peut trs
bien imaginer invoquer des services web grce au protocole FTP par exemple
Le protocole HTTP (HyperText Transfert Protocol) est lun des protocoles les
plus utiliss sur Internet. La plupart des clients web (IE, ) lutilisent pour
communiquer avec un serveur.
Ce protocole dfinit le format des requtes quun client peut envoyer ainsi que les
rsultats quil peut attendre.
Chaque requte contient une URL qui contient lidentifiant dun objet demand par
le client (ex.: pages HTML, images, ).
Ce protocole est dfini par le W3C et est prsent dans une RFC (Request for
Comment) : ftp://ftp.isi.edu/in-notes/rfc2616.txt.

15

La couche de transport (2/6) : HTTP


Exemple : un navigateur web souhaite obtenir la page par dfaut du site
www.google.fr

Client HTTP
(Internet Explorer)

EE
BB

Serveur Web
(Apache)

Ouverture dune socket sur le port 80 (port par dfaut)


GET / HTTP/1.0

S
EE
RR
VV
II
CC
EE
SS

HTTP/1.0 200 OK
Content-Length: 3403
Server: GWS/2.0
Date: Mon, 14 Oct 2002 06:31:35 GMT
Content-Type: text/html
<html><head><meta http-equiv="content-type" content="text/html; charset=ISO-88591"><title>Google</title><style>

Dans le cas o toutes les requtes HTTP doivent transiter par un serveur de cache (proxy HTTP),
il faut ouvrir les connexions sur ce proxy (et non sur le serveur cibl) puis demander lURL
entire.
Ex. : si un client, souhaite obtenir la page www.google.fr en passant par proxy.monintranet
1.
2.
3.
4.

16

Ouverture de la socket (en TCP) sur le port 3128 (port par dfaut) de proxy.monintranet ;
Envoi de la requte : GET http://www.google.fr HTTP/1.0
Le proxy se connecte son tour google.fr ;
Une fois que le proxy a obtenu le rsultat, il rpond au client.

La couche de transport (3/6) : HTTP


Quand un client envoie une requte, il lenvoie grce une mthode (GET, POST ou HEAD), suivie dune
URI (Uniform Ressource Identifier) qui identifie la ressource demande. Aprs cette URI se trouve la version
du protocole HTTP (1.0 ou 1.1) ;

W
EE
BB

Dans les lignes suivantes se trouvent les enttes qui prcisent par exemple quels sont les documents
accepts par client, de quel type de client il sagit,
Aprs les enttes se trouve le corps de la requte, rempli seulement lorsque la mthode POST est utilise.
Les mthodes
GET

S
EE
RR
VV
II
CC
EE
SS

Utilis pour demander un document : GET index.html


Le corps dune telle requte est toujours vide.
Permet galement de passer des paramtres au serveur, en les collant lURL :
GET index.jsp?userLogin=toto&userPasswd=kkju
Comme rsultat, GET renvoie dabord les enttes, puis le contenu du document

HEAD

Comme GET, mais aucune information ne se trouve dans le corps du rsultat.


Notamment utilis pour voir si un document a t mis jour.

POST

Permet au client denvoyer des donnes dans le corps de la requte.


Utile pour envoyer des formulaires, des documents, poster des messages dans les
newsgroups Cette mthode est celle qui convient le mieux SOAP

PUT

Permet dajouter une ressource.

DELETE

Permet de supprimer une ressource.

Utilises dans les architectures REST

Dautre mthodes existent : LINK, UNLINK, OPTIONS, TRACE mais sont rarement utilises ;
La rponse du serveur contient le statut de la rponse, les enttes puis le corps de la rponse (par exemple
le contenu dun document HTML ;

17

Diffrents statuts existent. Les principaux sont : 200 (ok), 400 (mauvaise requte), 403 (client non
autoris), 404 (document inexistant), 500 (erreur dexcution sur le serveur).

La couche de transport (4/6) : HTTP

Rsum:

Format dune requte HTTP:

Format dune rponse HTTP:

EE
BB

Commande
En-ttes
[Ligne vide ]
Corps

Status
En-ttes de rponse
[Ligne vide ]
Corps de rponse

S
EE
RR
VV
II
CC
EE
SS

18

Codes de retour: http://fr.wikipedia.org/wiki/Liste_des_codes_HTTP


Version actuelle: 1.1

http://fr.wikipedia.org/wiki/HTTP

La couche de transport (5/6) : SMTP


SMTP (Simple Mail Transfer Protocol) est le principal protocole utilis sur
Internet pour faire transiter les emails entre deux htes (une passerelle peut
galement tre utilise).

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

19

SMTP utilise TCP comme couche de transport et le port 25 par dfaut.


Exemple de lutilisation du protocole SMTP pour lenvoi dun mail sur
wanadoo.fr :
- La premire tape est louverture dune connexion (socket) sur le port 25 de
smtp.wanadoo.fr.

La couche de transport (6/6)


Exemple denvoi dun message SOAP au dessus de HTTP

W
EE
BB

Le message ne contient aucune information le liant la couche de transport.


Concernant le protocole HTTP, lajout dun attribut SOAPAction:uneURI permet au
destinataire (le serveur HTTP) de savoir quil reoit une requte SOAP. La valeur
est une uri qui nest pas vrifie.
Pour un envoi via HTTP:

S
EE
RR
VV
II
CC
EE
SS

ouverture dune socket sur le port du serveur (80 par dfaut) ;


puis :
POST /axis/services/echo HTTP/1.0
Content-Type: text/xml; charset=utf-8
User-Agent: Axis/1.0
Host: 192.168.0.1:8080
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: http://tempuri.org/echo
Content-Length: 453
puis est envoye la requte.

20

Obligatoire pour requte


SOAP sur HTTP

RPC (1/2)

W
EE
BB

Un RPC (Remote Procedure Call), est un mcanisme permettant lappel local


dune mthode distante : un client possde une copie (un stub) dun objet
distant sur lequel il appelle des mthodes. Ct serveur, le skeleton est un
objet sinterfaant avec le vrai objet appel.
Un stub est un proxy cot client.
Diffrents langages de RPC existent, dont :

S
EE
RR
VV
II
CC
EE
SS

21

Corba ;
DCOM ;
RMI ;
SunRPC;
DCE (Distributed Computing Environment).

Un systme distribu permet de rpartir des sous-ensembles dune architecture


dans diffrents serveurs.
Lavantage dun RPC est quil ny a (presque!) pas de diffrence entre un appel
local et un appel distant. Il ny a donc plus se soucier de la couche rseau, qui
est gre par le RPC.

RPC (2/2)
Une architecture distribue
Service RPC

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

Code de
lappelant

STUB

Client

Service RPC

Protocole
rseau

Rseau
Rseau

Protocole
rseau

SKELETON

Code du
serveur

Serveur
Chaque RPC a son protocole de communication:
IIOP pour Corba ;
ORPC pour DCOM ;
JRMP pour RMI ;
et HTTP, SMTP, pour SOAP !

On constate des diffrences entre SOAP et les autres protocoles :


SOAP est le seul protocole qui ne fait pas circuler de donnes binaires. En
plus dtre lisible, cela permet le dbugage ;
SOAP peut circuler sur HTTP, ce qui lui permet de passer les
firewalls dans leurs configurations standards. Cest l un de ses
grands avantages.

22

RPC avec SOAP

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

A ses dbuts, SOAP tait destin tre un protocole fournissant un mcanisme


de RPC, inter-oprable, car utilisant XML & HTTP (il est maintenant entre autre
un protocole de communication entre services web par changes de messages
XML).
Lors dun appel RPC, un message SOAP doit contenir :
ladresse du destinataire du message ;
le nom de la mthode excuter ;
les paramtres passer la mthode.

En devenant un RPC, les services web en SOAP peuvent tre vus comme un point
dentre dans les applications lourdes : par exemple, un service web peut
permettre une connexion entre un client sur Internet et une application base
dEJB.
De nombreuses API (Application Programmer Interface) permettent de crer des
stubs de mthodes exposes dans des services web.
Nous tudierons en TP lAPI Axis dApache ( un SOAP engine ).

23

WSDL (1/3)
WSDL (Web Service Description Langage), est un langage de description de
services web en XML.

Il dcrit :

EE
BB

Les informations sur les fonctions publiques du service web ;


Les types de donnes utiliss durant lchange de messages ;

S
EE
RR
VV
II
CC
EE
SS

Les diffrents protocoles aux travers desquels le service est accessible ; et


comment y accder ;
Une adresse permettant de localiser le service web.

A noter : WSDL pourrait dcrire nimporte quel protocole de messagerie bas sur
XML.
A noter (2) : les documents WSDL ne sont jamais gnrs par des dveloppeurs,
mais le sont grce des outils qui automatisent la tche (par exemple, il existe
des outils qui prennent une classe Java et qui crent le WSDL correspondant).

24

WSDL (2/3)
Ci-dessous le document WSDL dcrivant un WS proposant une mthode daddition.

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

25

<wsdl:definitions targetNamespace="http://192.168.0.12:8080/axis/SimpleWS.jws"/>
<wsdl:message name="addRequest">
<wsdl:part name="i1" type="xsd:int"/>
<wsdl:part name="i2" type="xsd:int"/>
Dcrit les messages
</wsdl:message>
qui circulent
<wsdl:message name="addResponse">
<wsdl:part name="addReturn" type="xsd:int"/>
Abstraction dcrivant une opration
</wsdl:message>
<wsdl:portType name="SimpleWS">
<wsdl:operation name="add" parameterOrder="i1 i2">
<wsdl:input message="impl:addRequest" name="addRequest"/>
Protocole daccs et format des
<wsdl:output message="impl:addResponse" name="addResponse"/>
messages
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="SimpleWSSoapBinding" type="impl:SimpleWS">
<wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="add">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="addRequest">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://192.168.0.12:8080/axis/SimpleWS.jws" use="encoded"/>
</wsdl:input>
<wsdl:output name="addResponse">
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
namespace="http://192.168.0.12:8080/axis/SimpleWS.jws" use="encoded"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="SimpleWSService">
<wsdl:port binding="impl:SimpleWSSoapBinding" name="SimpleWS">
<wsdlsoap:address location="http://192.168.0.12:8080/axis/SimpleWS.jws"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Dfinit comment est disponible
(SOAP) la mthode et quelle adresse

WSDL (3/4)
Sur le slide prcdent, quelques lments nont pas t prsents. Reprenons llment
<port> : il dfinit un point de terminaison (adresse internet plus liaison).

W
EE
BB

<wsdl:service name="SimpleWSService">
<wsdl:port binding="impl:SimpleWSSoapBinding" name="SimpleWS">
<wsdlsoap:address location="http://192.168.0.12:8080/axis/SimpleWS.jws"/>
</wsdl:port>
</wsdl:service>
Il est noter que llment <portType> peut contenir plusieurs oprations.

S
EE
RR
VV
II
CC
EE
SS

A lexemple prcdent manque llment <type> qui permet de dfinir des types
complexes (dans lexemple ci-dessous, la valeur renvoye est une chane de caractres).
Remarque : dans la dfinition des messages, nous navons aucune information sur le
protocole de transport. Cela reste dans la logique des web services.

Le logiciel XMLSpy donne une bonne vue (graphique) dun document WSDL (ici celui du
slide prcdent).
Une version complte dvaluation (30 jours) est disponible sur http://www.altova.com.
26

WSDL (4/4)
WSDL : rsum des lments dun document

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

27

Operation : une action particulire supporte par le service web dcrit. En


faisant lanalogie avec Java, on peut comparer une Operation une
(mthode dune) Interface ;
Message : dfinition des types de donnes utilises lors de linvocation (et
de la rponse) dune opration ;
PortType : un ensemble (1..n) doprations ;
Binding : lien entre un PortType et un protocole daccs ;
Port : dfinit un point daccs (cad une URL par exemple) pour un binding ;
Service : contient une collection de ports.

UDDI (1/2)
UDDI (Universal Description, Discovery and Integration) est un standard
ayant pour but la cration dun annuaire distribu de services web.
Cet annuaire contient :

W
EE
BB

les pages blanches : informations gnrales sur une socit (nom,


description, adresse) ;
les pages jaunes : classement des types de services ;

S
EE
RR
VV
II
CC
EE
SS

les pages vertes ou roses : informations sur les modes dexploitation du


service.
LUDDI Business Registry est une implmentation complte des spcifications
UDDI. Lance en mai 2001 par Microsoft et IBM, elle permet maintenant
quiconque dy chercher des informations et aux socits de senregistrer.
UDDI repose sur une architecture distribue comparable celle des
serveurs DNS.
En guise dexemple :
http://uddi.microsoft.com ;
http://www.ibm.com/services/uddi.

28

UDDI (2/2)

LAPI UDDI propose deux fonctionnalits principales :

la recherche de services (envoi de requtes).

EE
BB

la publication de services dans un annuaire UDDI ;

S
EE
RR
VV
II
CC
EE
SS

29

Les clients UDDI interrogent les serveurs (les sites oprateurs) UDDI en
envoyant des requtes formates en SOAP (sur HTTP avec la mthode
POST).
______________
Le slide suivant prsente un scnario complet. Les tapes sont :
1.
2.
3.
4.

Publication dun service web par une socit ;


Recherche dun service web ;
Dcouverte dun service web ;
Consommation dun service web.

UDDI + WSDL + SOAP : vue densemble


1

Entreprise
A

EE
BB

Lentreprise A
dveloppe et dploie
un service web (WS)

WS

S
EE
RR
VV
II
CC
EE
SS

Lentreprise A
rpond B

Lentreprise B
invoque WS

Lentreprise A
publie WS
Lentreprise B, la recherche dun service
du type WS, envoie une demande de
recherche au serveur UDDI

3
4

Le serveur UDDI renvoie ladresse


de WS (plus dautres info comme la
description du service. cf plus loin)

Serveur
UDDI
30

Entreprise
B

Conclusions de la premire partie


Trop souvent on lit web services = SOAP . Cest faux !
Web service = XML + (HTTP|SMTP|FTP|)

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

Les services web permettent de mettre en place des services faiblement


coupls (loosely coupled), rendant la communication entre deux plateformes incompatibles possible.

SOAP est indpendant de la couche de transport ;

Cependant, SOAP est devenu de facto le standard des services web ;

SOAP peut faire des RPC, mais pas que des RPC ;

WSDL sert dcrire des services web ;

UDDI est un annuaire qui rpertorie les socits et les services web
quelles proposent ; UDDI est bas sur une architecture distribue.
31

Les offres du march


Le march des services web est trs fourni : la plupart des diteurs
proposent des kits de dveloppement.

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

32

Le premier proposer les services web au cur de son architecture a t


Microsoft, avec la plate-forme .NET.
Le monde Java a bien ragi bien que les spcifications J2EE de lpoque
(version 1.3) ne parlaient aucunement de services web. Ils y ont t introduits
dans la version 1.4.
Tous les diteurs du monde Java proposent leur kit pour les services web :

Oracle pour 10gAS ;


BEA pour WebLogic ;
IBM pour WebSphere;
Sun pour Sun Java System Application Server ;

De nombreux projets Open Source existent galement, comme par exemple


lAPI Axis utilise en TP. Les IDE open source intgrent eux aussi ces
technologies : Eclipse, NetBeans...

La scurit des services web (1/4)


A la vue du contenu des messages issus des services web, il est
important de disposer de mcanisme de scurit assurant
lauthentification, lintgrit et lauthenticit des donnes.

La scurit dun service web peut se faire deux niveaux :

EE
BB

applicatif : sur la couche SOAP par exemple ;


au niveau rseau.

S
EE
RR
VV
II
CC
EE
SS

33

Lavantage de pouvoir passer les firewalls donnent aux hackers de nouveaux


points dentre dans le systme dinformation de lentreprise ; ce qui
peut leur permettre par exemple de lancer une attaque de dni de service sur le
serveur.
De plus, les messages tant cods en XML, les mthodes et procdures
proposes par une entreprise transitent en clair sur le rseau, ce qui
constitue une indication pour les pirates.
A la vue de larchitecture des services web, il apparat que la problmatique de
scurisation est la mme que celle dun site web car les donnes transitent
(dans la plupart des cas) sur HTTP.
On peut donc dans un premier temps mettre les mmes solutions de scurit
que celles utilises pour les sites web, savoir le protocole SSL.

La scurit des services web (2/4)


Le protocole SSL a t dvelopp par Netscape. Permettant le cryptage des
donnes, il est trs utilis sur Internet pour faire transiter des informations
sensibles (par exemple un numro de carte de crdit).

Il est noter que lorganisme de normalisation IETF la renomm TLS.

EE
BB

Le protocole HTTP sutilisant avec le protocole SSL devient HTTPS. Le port par
dfaut nest plus 80 mais 443.

SSL est bas sur la cryptographie. Il fonctionne grce un systme de cls


publiques et de cls prives.

EE
RR
VV
II
CC
EE
SS

1 - Le client initialise une connexion (non crypte, port 443 par dfaut)

2- Le serveur renvoie une cl de cryptage (sa cl publique).


Cette requte nest pas crypte.

3 Le client gnre une chane de 46 octets et la crypte avec la cl


publique du serveur. Seul le serveur (possdant la cl prive) peut
dcrypter ce message.
Seuls le client
et
le serveur
peuvent
dchiffrer ces
messages

34

4 - Le serveur dcrypte la chane de 46 octets qui est utilise pour crer


des cls de cryptage utilises pour le reste de la session
5 - Les donnes transitant sont cryptes

La scurit des services web (3/4)


SSL permet grce aux cls publiques et prives dencoder les messages, mais ne
permet pas didentifier le serveur.

W
EE
BB

En effet, au moment de linitialisation du protocole SSL (tape 2) sur le slide


prcdent, nimporte quelle serveur pirate peut se faire passer pour le serveur
interrog par le client et renvoyer une cl publique.

Pour palier ce problme, les certificats ont t mis en place.

EE
RR
VV
II
CC
EE
SS

Un certificat est un objet verrouill qui contient lidentit dun serveur ainsi que
sa cl publique. Il est encrypt avec la cl prive de lorganisme qui le dlivre
(comme Verisign par exemple).

Quand un client se connecte un site, il demande lorganisme des certificats de


vrifier lidentit du serveur (grce au certificat envoy par le serveur).

Cela permet davoir avec HTTPS lauthentification ainsi que le cryptage


des donnes.
35

La scurit des services web (4/4)


La scurit des services web peut galement se faire sur des couches plus
basses (couches rseaux). Grce des rgles dfinies sur des firewalls, on peut
par exemple autoriser laccs un service web seulement des clients ayant des
adresses IP connues.

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

Certains constructeurs/diteurs de firewalls ajoutent des rgles de filtrage de


messages SOAP, qui peuvent grce des enttes SOAP vrifier quun
consommateur dun service est autoris y accder.
Des protocoles spcifiques sont en cours dlaboration. Microsoft a propos au
W3C le protocole WS-Security qui permet lidentification des utilisateurs,
lintgrit des messages SOAP ainsi que le chiffrement des donnes.
WS-Security est bas sur XML Signature (authenticit de lutilisateur) et de
XML Encryption (encodage des donnes).

Un exemple avec le protocole WS-Security


(source : http://msdn.microsoft.com)
36

AXIS

Axis est une API Java (Open Source) servant crer et consommer des
services web;

W
EE
BB

AXIS = Apache eXtensible Interaction System


Site web : http://ws.apache.org/axis ;

Supporte SOAP 1.1 et 1.2 partiellement ;

EE
RR
VV
II
CC
EE
SS

Pas de support dUDDI ;


Sutilise avec nimporte quel serveur dapplication J2EE (propose mme un
serveur HTTP pour fonctionner en mode stand-alone) ;
Propose deux outils WSDL2Java et Java2WSDL permettant le mapping entre
des services web et des classes Java, et vice-versa ;
Dispose dun outil de monitoring de requtes ;
Propose un mchanisme ultra-simple de cration de services web ;
AXIS est lAPI que nous allons utiliser pendant les TPs.

37

AXIS : invocation dynamique dun service web


AXIS implmente la spcification JAX-RPC

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

38

AXIS : utilisation de WSDL2Java


WSDL2Java permet de reprsenter un service ct client. A la diffrence de
linvocation dynamique, cela permet de :

W
EE
BB

passer les arguments la place de tableaux dobjets (cf exemple prcdent) ;


avoir en retour lobjet attendu et non un objet Object caster

WSDL2Java gnre :

S
EE
RR
VV
II
CC
EE
SS

39

Nom de la balise XML dans le


document WSDL

Classe gnre

<type>

nom-type.java

<porttype>

nom-port.java

<binding>

nom-portBindingStub.java

<service>

port-nameService.java

AXIS : utilisation de WSDL2Java


Relations entre les fichiers gnrs par WSDL2Java et squence dutilisation :

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

40

source : http://www.ociweb.com/javasig/knowledgebase/2002Sep/Axis.pdf

Un peu de scurit dans la pratique (1/2)


Quelles sont les attaques auxquelles un service web est expos :

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

41

Dni de service ;
Interception et manipulation des messages ;
Requte du client falsifie ;
Rponse du serveur falsifie ;
Tentative de lectures/critures sur le systme de fichiers du serveur.

-> Ces attaques ne sont pas spcifiques aux services web mais aux serveurs web !

A ces attaques, se rajoutent les attaques propres aux donnes XML :


Envois de trs gros documents XML (assimile un dni de service) ;
Dclarations dentits rcursives dans les headers XML ;
Dclarations dentits pointant sur un fichier local.

source : documentation dAxis

Un peu de scurit dans la pratique (2/2)


Quelques options pour scuriser un service web :

Authentifier les clients (avec HTTPS par exemple) ;

EE
BB

Ecrire du code sr ;

Renommer les outils exposs afin que personne ne sache que vous utilisez
Axis (ou une autre API) ;

EE
RR
VV
II
CC
EE
SS

Recompiler Axis avec le strict ncessaire lexcution du service ;

Dsactiver la gnration automatique des fichiers WSDL ;


Filtrer les accs via les adresses IP ;
Logger les accs ;
Lancer le serveur web et Axis avec des droits rduits ;
...

42

La mobilit et les services web (1/2)


De nombreuses solutions permettent dinvoquer des services web depuis des
clients mobiles (PDA PocketPC/Linux, tlphones J2ME).

Avec un OS Microsoft :

EE
BB

.NET CF : la version pour terminaux mobiles de lenvironnement dexcution


(runtime) de .NET intgre les API pour invoquer des services web ;

PocketSOAP : client open source SOAP, disponible sous la forme dun objet
COM (galement disponible pour win32) ;

EE
RR
VV
II
CC
EE
SS

En faisant du Java :
J2ME Web Service API (JSR 172) :
http://developers.sun.com/techtopics/mobility/apis/articles/wsa ;
Oracle J2ME Web Service : cf slide suivant.

PS : ce nest pas une liste exhaustive !


43

La mobilit et les services web (2/2)


Lapproche dOracle pour la consommation de
services web depuis des applications J2ME :
exemple dappel dun service web Addition

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

add 3 4

Proxy

SOAP/HTTP

Service web

 Un proxy se charge de la communication avec le service web afin den cacher


la complexit au client J2ME. Ce proxy doit tre gnr pendant le
dveloppement de lapplication (depuis JDeveloper, IDE dOracle) ;
 Le terminal mobile nenvoie donc que la chane de caractres add 3 4 , ce
qui lui vite de faire du traitement XML (coteux).

44

Architectures Orientes Services (1/4)


SOA = Services Oriented Architecture
Larchitecture oriente service est un modle dinteraction applicative qui met en
uvre des services (composants logiciels) :

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

avec une forte cohrence interne (par l'utilisation d'un format d'change pivot, le plus
souvent XML)
et des couplages externes lches (par l'utilisation de couche d'interface
introprable, le plus souvent un Web services).
 SOA est un concept, les services web en sont une utilisation.
Description dune architecture SOA :
Annuaire de services : rfrence lensemble des services disponibles au sein du
systme dinformation ;
Bus de services : le bus a un rle de mdiateur (middleware) entre le consommateur
et le producteur du service, il permet ainsi de raliser le couplage lche ;
Service : cf. slide suivant.
-> SOA dfinit comment allier dveloppement orient objet et programmation distribue.

45

Source : http://fr.wikipedia.org/wiki/Service_Oriented_Architecture

Architectures Orientes Services (2/4)


SOA, dfinitions :

Fournisseur de services (service provider) : entit qui fournit et excute


le service (cad le serveur) ;

EE
BB

Consommateur de services (service consumer) : entit qui consomme le


service (cad le client) ;

Message (message): entres et sorties du service (dans les services web:


SOAP) ;

EE
RR
VV
II
CC
EE
SS

46

Contrat de service (service contract) : document qui dfinit comment le


fournisseur et le consommateur inter-agissent (dans les services web:
WSDL) ;
Annuaire (service registry) : un annuaire dans lequel se trouvent les
services (dans les services web: UDDI).

Architectures Orientes Services (3/4)


Le service est un composant clef de lArchitecture Oriente Services. Il consiste en une
fonction ou fonctionnalit bien dfinie.

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

Une architecture oriente services consiste essentiellement en une collection de services


qui interagissent et communiquent entre eux. Cette communication peut consister en un
simple retour de donnes ou en une activit (coordination de plusieurs services).
Un service est une entit de traitements qui respecte les caractristiques suivantes :
Grande maille (coarse grained) : les oprations proposes par un service encapsulent
plusieurs fonctions et oprent sur un primtre de donnes large au contraire de la notion
de composant technique ;
Interface : un service peut implmenter plusieurs interfaces et aussi plusieurs services
peuvent implmenter une interface commune ;
Localisable : avant dappeler (bind, invoke) un service, il faudra le rechercher (find).
Instance unique : la diffrence des composants qui sont instancis la demande et
peuvent avoir plusieurs instances en mme temps ; un service est unique. Il correspond
au design pattern Singleton ;
Faible couplage (loosely-coupled) : les services sont connects aux clients et autres
services via des standards. Ces standards assurent la rduction de dpendance et du
dcouplage . Ces standards sont des documents XML comme dans les web services ;
Synchrone ou Asynchrone.

47

Source : http://fr.wikipedia.org/wiki/Service_Oriented_Architecture

Architectures Orientes Services (4/4)


Parmi les diffrentes couches de normes et protocoles qui permettent de btir des
architectures orientes services, on relve :
la gestion d'un annuaire de services (quels sont les services mis disposition et par qui)
avec : UDDI (Universal Description Discovery and Integration) normalis par l'OASIS ;

W
EE
BB

S
EE
RR
VV
II
CC
EE
SS

la description des interfaces des services (quelles sont les donnes ncessaires
l'excution du service, que fournit-il en retour, ...) avec : WSDL (Web Services Description
Language) recommand par le W3C ;
l'invocation (ou l'appel) du service (la requte transmise au service) avec : SOAP (Simple
Object Access Protocol) recommand par le W3C ;
le format des donnes changes avec : XML (eXtensible Markup Language) recommand
par le W3C ;
le transport des donnes avec les protocoles internet : HTTP et TCP/IP qui sont des
normes RFC ;
la gestion de la scurit avec : SSL (Secure Sockets Layer), XML Signature, XML
Encryption, SAML (Security Assertion Markup Language) ou encore XKMS (XML Key
Management Specification, qui gre les infrastructures cl publique ou PKI) ;
l'orchestration (on parle galement de chorgraphie) des services pour constituer des
processus mtier avec : BPEL4WS (Business Process Execution Language For Web Services) qui
regroupe WSFL (Web Services Flow Language) d'IBM et XLang de Microsoft, ou encore WSCI
(Web Services Choregraphy Interface) ;
la gestion transactionnelle : WS-Transaction d'IBM, XAML (Transaction Authority Markup
Language) ou encore BTP (Business Transaction Protocol).

48

Source : http://fr.wikipedia.org/wiki/Service_Oriented_Architecture

You might also like