Professional Documents
Culture Documents
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
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) ;
EE
RR
VV
II
CC
EE
SS
Exemple :
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
EE
BB
Exemple
EE
RR
VV
II
CC
EE
SS
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">
<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>
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
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.
EE
BB
S
EE
RR
VV
II
CC
EE
SS
http://www-106.ibm.com/developerworks/webservices/library/ws-best1/?dwzone=webservices#figure1
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
10
Enveloppe SOAP
En-tte SOAP
(header)
Corps du message SOAP
(body)
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
11
<Envelope>
<Header>
<Transaction>3<Transaction>
</Header>
<Body>
<echoString>
<arg0>Hello!</arg0>
</echoString>
</Body>
</Envelope>
Lenveloppe contient tout le message
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
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
13
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
14
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
15
Client HTTP
(Internet Explorer)
EE
BB
Serveur Web
(Apache)
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.
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
HEAD
POST
PUT
DELETE
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).
Rsum:
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
http://fr.wikipedia.org/wiki/HTTP
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
19
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
20
RPC (1/2)
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
21
Corba ;
DCOM ;
RMI ;
SunRPC;
DCE (Distributed Computing Environment).
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 !
22
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
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
S
EE
RR
VV
II
CC
EE
SS
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
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
S
EE
RR
VV
II
CC
EE
SS
28
UDDI (2/2)
EE
BB
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.
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
Serveur
UDDI
30
Entreprise
B
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
SOAP peut faire des RPC, mais pas que des RPC ;
UDDI est un annuaire qui rpertorie les socits et les services web
quelles proposent ; UDDI est bas sur une architecture distribue.
31
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
32
EE
BB
S
EE
RR
VV
II
CC
EE
SS
33
EE
BB
Le protocole HTTP sutilisant avec le protocole SSL devient HTTPS. Le port par
dfaut nest plus 80 mais 443.
EE
RR
VV
II
CC
EE
SS
1 - Le client initialise une connexion (non crypte, port 443 par dfaut)
34
W
EE
BB
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).
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
AXIS
Axis est une API Java (Open Source) servant crer et consommer des
services web;
W
EE
BB
EE
RR
VV
II
CC
EE
SS
37
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
38
W
EE
BB
WSDL2Java gnre :
S
EE
RR
VV
II
CC
EE
SS
39
Classe gnre
<type>
nom-type.java
<porttype>
nom-port.java
<binding>
nom-portBindingStub.java
<service>
port-nameService.java
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
40
source : http://www.ociweb.com/javasig/knowledgebase/2002Sep/Axis.pdf
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 !
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
42
Avec un OS Microsoft :
EE
BB
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.
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
add 3 4
Proxy
SOAP/HTTP
Service web
44
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
EE
BB
EE
RR
VV
II
CC
EE
SS
46
W
EE
BB
S
EE
RR
VV
II
CC
EE
SS
47
Source : http://fr.wikipedia.org/wiki/Service_Oriented_Architecture
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