SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
SOA
SOAP Web Services
* Testé avec
* JDK13
* TOMEE+ 8.0.1
* Netbeans 11.3
* Springboot 2.2.5
* Également besoin de
* Ant(?)
* Mvn
* Git
* PHP
* SoapUI
Pré-requis
* Simples, légers
* Appel de ressources via verbes HTTP
* Pas d’états (stateless WS)
* (http: non connecté)
* Sérialisation aux soins du dev.
* Pas de normes de sécurité particulière
Web services Rest
* Répond aux besoins précédents
* Ajout du protocole SOAP (XML) au dessus d’HTTP
* HTTP n’est plus utilisé, transparent
* Définition des sérialisations, des accès (RPC encoded, document/literal, etc.)
* Normes de sécurité (WS-Trust, WS-security)
* Plus complexe, plus lourds
Services Web SOAP
* Présentation de WS SOAP
* Description WSDL, sérialisation SOAP
* Introduction de Frameworks
* JAXWS via Netbeans
* Apache Axis2
* (fait tout, mais en lcmd, rest en plus)
* Springboot
Contenu du cours
Description SOAP, WSDL,
SOAP REST
Meaning Simple Object Access Protocol Representational State Transfer
Design
Standardized protocol with pre-defined rules to
follow.
Architectural style with loose guidelines and
recommendations.
Statefulness Stateless and stateful. Stateless (no server-side sessions).
Caching API calls cannot be cached. API calls can be cached.
Security
WS-Security with SSL support. Built-in ACID
compliance.
Supports HTTPS and SSL.
Performance Requires more bandwidth and computing power. Requires fewer resources.
Message format Only XML. Plain text, HTML, XML, JSON, YAML, and others.
Transfer protocol(s) HTTP, SMTP, UDP, and others. Only HTTP
Recommended for
Enterprise apps, high-security apps, distributed
environment, financial services, payment gateways,
telecommunication services.
Public APIs for web services, mobile services, social
networks.
Advantages High security, standardized, extensibility.
Scalability, better performance, browser-friendliness,
flexibility.
Disadvantages Poorer performance, more complexity
Less security, not suitable for distributed
environments. No standard
Soap vs. Rest
Tiré en partie de https://raygun.com/blog/soap-vs-rest-vs-json/
Resp: S. SALVA IUT licence pro
Utilisation d’HTTP:
•Protocole Internet
•Beaucoup d’entreprises possèdent un serveur web
•Protocole généralement autorisé au niveau de parefeu
•Protocole disponible sur toutes les plateformes
•Mode non connecté
Utilisation d’XML:
•Massivement utilisé et reconnu
•Permet de structurer l’information facilement
Resp: S. SALVA IUT licence pro
Implémentations actuelles (SOAP) :
Microsoft .Net
Sun Metro (JaxWS, etc.)
Apache Axis2 et CXF
IBM WSTK
Oracle, Bea, Iona, Enhydra …
Resp: S. SALVA IUT licence pro
WS-I Organisation a pour but la normalisation de schémas (XML pour SOAP
WSDL) interopérable
But: normalisation des messages
• WS-I Basic Profile 1.1
– Mode d’utilisation de SOAP, WSDL et UDDI
– Support du DOCUMENT/Literal et RPC/Literal
– Pas de prise en compte des attachements
• WS-I Attachments Profile 1.1
– Couvre la gestion des attachements
– Repose sur SOAP 1.1 With Attachments
Resp: S. SALVA IUT licence pro
Serveur
Serveur
client
client
client
client
client
Service web accessible via les protocoles HTTP+SOAP
Page jaune de services SOAP avec le protocole UDDI
Cycle de vie:
1. Accès à un annuaire UDDI pour localiser un service
2. Récupération de l’interface du service web
3. Appel au service (requète, réponse)
Resp: S. SALVA IUT licence pro
Annuaire
UDDI
Client
XML
4: envoi d’une requète au service web
Requète XML avec SOAP
Serveur
2 : requête pour obtenir l’interface du service web
3 : réponse WSDL
XML
XML
5 : envoi du résultat avec SOAP
1:
recherche
D’un
service
web
Resp: S. SALVA IUT licence pro
•Le concept de service web s’articule autour de 3 protocoles:
•SOAP (Simple Object Access Protocol) est un protocole permettant
l’échange de données quelquesoit la plateforme. Un appel de service SOAP
coorespond à un flux de données XML sur HTTP
•WSDL (Web Service Description Language) permet de décrire au format
XML les fonctionnalités du service web (méthodes, URLs, signature, port,…)
•UDDI (Universal Description Discovery and Integration) normalise un
solution d’annuaire des service web
•Il existe aussi des protocoles pour XML spécifiques à la sécurité
Resp: S. SALVA IUT licence pro
Les protocoles, WSDL, SOAP, UDDI
Protocole permettant de faire des appels de méthodes de services Web décrits en
XML et encapsulés sur HTTP(mode synchrone) ou sur SMTP,JMS(java message
service) (mode asynchrone)
Serveur Web
tomcat
SOAP
dispatcher
execution
Client
Requètes SOAP
Service Provider
Resp: S. SALVA IUT licence pro
•Service synchrones
sur HTTP
appels bloquants
Pas de garanties de retour
principalement utilisé
•Service asynchrones
sur SMTP, JMS
non bloquants
garantie de service (1 retour)
Resp: S. SALVA IUT licence pro
<soap:Envelope
xmlns:soap=http://www.w3.org/2001/12/soap-envelope
soap:encodingStyle=http://www.w3.org/2001/12/soap-encoding>
<soap:Header>
…
</soap:Header>
<soap:Body>
…
<soap:Fault>
…
</soap:Fault>
</soap:Body>
</soap:Envelope>
Un message SOAP doit utiliser les balises SOAP et doit avoir la forme suivante:
Resp: S. SALVA IUT licence pro
•La balise <SOAP-ENV:Envelope… spécifie le type d’encodage et contient des
définitions de namespace
•Les entêtes SOAP (optionnelles) permettent d’échanger des informations
d’authentification ou de gestion de session
•Les balises <SOAP-ENV:Body> … </SOAP-ENV:Body> contiennent le corps du
message = description des paramètres, retours des méthodes
•La balise de la méthode contient son namespace (MySOAPSERVICE) (nom
unique de la méthode sur Internet) puis les paramètres (et surtout leurs types)
•Les paramètres peuvent être de plusieurs types et peuvent être plus ou moins
complexes (chaîne, tableaux,…)
Resp: S. SALVA IUT licence pro
Rappel sur les namespaces
espace de nommage XML = collection de noms (RFC 2396)
utilisés comme type d’éléments et noms d’attribut
<x
xmlns:edi=‘http://ecommerce.org/schema>
</x>
Edi est lié à http://...
Pour l’élément x et son contenu
Namespace préfixes:
Soap « http://schemas.xmlsoap.org/soap/envelope/ »
Wsdl « http://schemas.xmlsoap.org/wsdl/ »
…
Resp: S. SALVA IUT licence pro
Un exemple de message SOAP en RPC literal
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:mh="http://www.Monson-Haefel.com/jwsbook/BookQuote">
<soap:Body>
<mh:getBookPrice>
<isbn>0321146182</isbn>
</mh:getBookPrice>
</soap:Body>
</soap:Envelope>
package com.jwsbook.soap;
import java.rmi.RemoteException;
public interface BookQuote extends java.rmi.Remote {
// Get the wholesale price of a book
public float getBookPrice(String ISBN) throws RemoteException, InvalidISBNException;
}
requête
Resp: S. SALVA IUT licence pro
SOAP propose différents types d’encodage:
•2 types de messages:
•RPC: appel d’une méthode d’un objet distant avec passage de
paramètres.
•Document: plusieurs parties pour l’appel, pour la méthode, pour les
paramètres, pas de formatage
•Pour les applications qui sérialisent/désérialisent les données (paramètres
ou retours), il existe aussi 2 types d’encodage:
•SOAP encoded: les données sont sérialisées via des codages SOAP
(généralement SOAP RPC)
•Literal: données sérialisées par schemas XML. Pas de règles
définies. Document/literal choisi par microsoft
Resp: S. SALVA IUT licence pro
Exemples (trouvé sur ibm.com):
On part de cette méthode: public void myMethod(int x, float y);
Voici les différents messages (enveloppes) SOAP et descriptions WSDL
possibles:
La description WSDL contient la structure des appels (RPC) ou le schéma
(structure des messages SOAP) XML (Document)
Resp: S. SALVA IUT licence pro
RPC encoded:
SOAP:
<soap:envelope>
<soap:body>
<myMethod>
<x xsi:type="xsd:int">5</x>
<y xsi:type="xsd:float">5.0</y>
</myMethod>
</soap:body>
</soap:envelope>
ÞNon-conforme à WS-I basic profile, peu performant (à cause des types)
ÞPb d’interopérabilité !
WSDL:
<message name="myMethodRequest">
<part name="x" type="xsd:int"/>
<part name="y" type="xsd:float"/>
</message>
<message name="empty"/>
<portType name="PT">
<operation name="myMethod">
<input message="myMethodRequest"/>
<output message="empty"/>
</operation>
</portType>
<binding .../>
Resp: S. SALVA IUT licence pro
deprecated
RPC literal:
SOAP:
<soap:envelope>
<soap:body>
<myMethod>
<x>5</x>
<y>5.0</y>
</myMethod>
</soap:body>
</soap:envelope>
ÞConforme WS-I basic profile
ÞEncodage XML, mais difficile de valider le message (myMethod ?)
Document encoded:
=> Pas utilisé, non-conforme WS-I
WSDL:
<message name="myMethodRequest">
<part name="x" type="xsd:int"/>
<part name="y" type="xsd:float"/%gt;
</message>
<message name="empty"/>
<portType name="PT">
<operation name="myMethod">
<input message="myMethodRequest"/>
<output message="empty"/>
</operation>
</portType>
<binding .../>
Resp: S. SALVA IUT licence pro
deprecated
Document literal:
WSDL:
<types>
<schema>
<element name="xElement" type="xsd:int"/>
<element name="yElement" type="xsd:float"/>
</schema>
</types>
<message name="myMethodRequest">
<part name="x" element="xElement"/>
<part name="y" element="yElement"/>
</message>
<message name="empty"/>
<portType name="PT">
<operation name="myMethod">
<input message="myMethodRequest"/>
<output message="empty"/>
</operation>
</portType>
<binding .../>
SOAP:
<soap:envelope>
<soap:body>
<xElement>5</xElement>
<yElement>5.0</yElement>
</soap:body>
</soap:envelope>
Resp: S. SALVA IUT licence pro
Document literal:
•Conforme WS-I basic profile si une rubrique dans soap:body
(ici on en a 2 !)
=> interopérable
•Plus flexible
•pas d’encodage déterminé, n’importe quel XML validator peut valider ce
message
•Perte de l'opération, méthode mappée par rapport a ses paramètres
pas possible dans un même service web d'avoir deux méthodes avec la même liste de
paramètres
Resp: S. SALVA IUT licence pro
WSDL:
<types> <schema>
<element name="myMethod">
<complexType>
<sequence>
<element name="x" type="xsd:int"/>
<element name="y" type="xsd:float"/>
</sequence>
</complexType>
</element>
<element name="myMethodResponse">
<complexType/>
</element>
</schema> </types>
<message name="myMethodRequest">
<part name="parameters" element="myMethod"/>
</message>
<message name="empty">
<part name="parameters" element="myMethodResponse"/>
</message>
<portType name="PT"> <operation name="myMethod">
<input message="myMethodRequest"/>
<output message="empty"/>
</operation> </portType>
<binding .../>
SOAP:
<soap:envelope>
<soap:body>
<myMethod>
<x>5</x>
<y>5.0</y>
</myMethod>
</soap:body>
</soap:envelope>
Document/literal wrapped
Resp: S. SALVA IUT licence pro
Document/literal wrapped:
•L’opération est encapsulé dans un élément XML portant le nom de l’opération
Þmeilleure interopérabilité ?
•le meilleur de RPC et document literal ?
•Proposé par microsoft
•Respecte le WS-I basic profile si une rubrique par soap:body
(ici c’est bien le cas)
•Messages plus complexes => performance ?
•Semble la meilleure solution (?)
Resp: S. SALVA IUT licence pro
•Mais que fau-il utiliser ?
1. Ne pas utiliser Document/literal wrapped avec des méthodes surchargées
(=> 2 éléments avec le même nom)
utiliser document literal
2. Si méthodes surchargées et renvoi de méthodes => utiliser rpc literal
selon quelques tests, RPC literal semble être le plus performant ?
3. Le type RPC encoded peut être interressant pour l’utilisation de données spécifiques
(arbres,…)
RPC encoded permet de créer un lien entre données (href…)
Resp: S. SALVA IUT licence pro
deprecated
Utilisation des attachments (par email !)
•Utilisation pour un gros volume de données en entrée ou sortie du service
web
•Souvent utilisé pour des services web asynchrones (traitement lourds)
•Pas de sérialisation/deserialisation automatique, A faire !
généralement en XML=> découpage en fragments et déserialisation
(dans des threads si bq de données)
Resp: S. SALVA IUT licence pro
Les messages d’erreurs:
Messages d’erreurs générés par les destinataires d’un message
Message d’erreur: une seul élément erreur dans le Body SOAP
Plusieurs codes d’erreurs: client, server, VersionMismatch, MustUnderstand
Ex: Client.Authentication
Messages d’erreurs supplémentaires: messages HTTP !!!! (400 bad request,
405 method not allowed, 500 internal server error…)
Resp: S. SALVA IUT licence pro
Un message d’erreur est composé de 4 éléments:
• Faultcode (obligatoire)
Code d’erreur utilisé par le logiciel (utilisation de la classe
SOAPException)
• Faultstring (obligatoire)
Explication lisible d’un humain
• faultactor (optionnel)
Erreur en cours de cheminement du message (firewall, proxy, MOM)
• Detail
Détail de l’erreur non lié au Body du message
• Autres
D’autres éléments qualifiés par un namespace peuvent être ajoutés
Resp: S. SALVA IUT licence pro
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:mh="http://www.Monson-Haefel.com/jwsbook/BookQuote" > *
<soap:Body>
<soap:Fault>
<faultcode>soap:Client</faultcode>
<faultstring> The ISBN value contains invalid characters </faultstring>
<faultactor>http://www.xyzcorp.com</faultactor>
<detail> <mh:InvalidIsbnFaultDetail>
<offending-value>19318224-D</offending-value>
<conformance-rules>
The first nine characters must be digits.
The last character may be a digit or the letter 'X'. Case is not important.
</conformance-rules>
</mh:InvalidIsbnFaultDetail>
</detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
Un message d’erreur
Resp: S. SALVA IUT licence pro
Les messages envoyés au serveur seront de la forme SOAP XML de même que
les réponses du serveur
ÞBesoin de sérialiser les messages. Utilisation simple d’un package SOAP (par
héritage) qui fait le travail pour vous
Invocation du service en appelant une de ses méthodes grâce au package SOAP
en spécifiant l’url du service, les paramètres
Le package SOAP sérialise l’invocation, encode le message dans une requète
HTTP puis effectue une requête au serveur web à l’url du service web. A la réponse
du service web, le package SOAP effectue l’inverse
Resp: S. SALVA IUT licence pro
Resp: S. SALVA IUT licence pro
•Le serveur repose principalement sur un package SOAP identique au client
•Il possède en plus un listener (processus d’écoute) en attente de connexion de
clients. Ce listener est implanté par une servlet avec Axis
•La servlet SOAP extrait le message SOAP-XML, la de-serialise (récupération
du nom de la méthode, des paramètres), puis invoque la méthode concernée du
service. Le résultat et sérialisé puis renvoyé au client
Resp: S. SALVA IUT licence pro
Langage XML de description de services web
description normalisée qui permet une utilisation inter-plateforme
cache le code du web service
Regroupe :
•Les méthodes du service web
•Les paramètres et les valeurs de retour
•Le protocole de transfert (SOAP ou autre )
•La localisation
Les documents WSDL peuvent être écrits à la main (oupss) mais sont surtout
générés
Resp: S. SALVA IUT licence pro
Un document WSDL est constitué de plusieurs parties (7) qui sont principalement:
•L’url du service
•Le protocole associé à l’accès au service (SOAP, RPC,…)
•Les méthodes du service
•Les paramètres d’entrées, sorties et leurs encodages
Resp: S. SALVA IUT licence pro
Une description WSDL est un document XML qui commence par
la balise definition et contient les balises suivantes :
• types: cette balise décrit les types utilisés
•message: cette balise décrit la structure d’un message échangé
•portType: cette balise décrit un ensemble d’opérations (interface d’un
service web)
•operation: cette balise décrit une opération réalisée par le service web. Une
opération reçoit des messages et envois des messages.
•binding: cette balise décrit le lien entre un protocole (http) et un
portType.
•service: cette balise décrit un service comme un ensemble de ports.
•port: cette balise décrit un port au travers duquel il est possible d’accéder à
un ensemble d’opérations. Un port référence un Binding
Resp: S. SALVA IUT licence pro
Partie 1: description des types utilisés par le service (tableau, vecteur,…)
Exemple:
xsd:complexType name="phone">
<xsd:all>
<xsd:element name="areaCode" type="xsd:int"/>
<xsd:element name="exchange" type="xsd:string"/>
<xsd:element name="number" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
Resp: S. SALVA IUT licence pro
Partie 2: les messages (ensemble des données transmises) description de la
requète HTTP et de la réponse HTTP avec les paramètres mis en jeu
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
Resp: S. SALVA IUT licence pro
Partie 3: les types de port (desc la plus importante) définissent les points de
connections au service web (peut être comparé à une classe)
Opération type requête réponse (il y en a d’autres):
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
Resp: S. SALVA IUT licence pro
WSDL définit 4 types d’opération :
•One-Way : lorsque les opérations reçoivent des messages mais n’en n’envoient
pas
•Request-response : lorsque les opérations reçoivent des messages puis renvoient
des Messages
•Solicit-response : lorsque les opérations envoient des messages puis en reçoivent
•Notification : lorsque les opérations envoient des messages mais n’en reçoivent
pas
•Une opération :
Reçoit des messages : <wsdl:input …>
Envoie des messages : <wsdl:output …> ou <wsdl:fault …>
Resp: S. SALVA IUT licence pro
Partie 4: lier une description abstraite (portType) à un protocole.
(à la suite du code XML précèdent, on trouve…)
<binding type="glossaryTerms" name="b1">
<soap:binding style="document" transport=
"http://schemas.xmlsoap.org/soap/http" />
<operation>
<soap:operation soapAction="http://example.com/getTerm"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
Type port, nom
binding
Style: document
ou rpc
Protocole (http)
Opération du port
Style d’encodage
Resp: S. SALVA IUT licence pro
Partie 5: les ports (différents de type de port) définissent l’url chez le fournisseur,
effectue la relation entre lien et url
Partie 6: partie service qui rassemble l’ensemble des ports
<wsdl:service name=« nomservice" >
<wsdl:port name=" nomport" binding=" impl: glossaryTerms ">
<wsdlsoap: address location=" http://serveur:8080/axis/nomport" />
</wsdl:port>
</wsdl:service>
Nom du lien
Resp: S. SALVA IUT licence pro
Resp: S. SALVA IUT licence pro
Exemples
Resp: S. SALVA IUT licence pro

Contenu connexe

Similaire à soapC1.pdfnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012Sylvain Maret
 
Introduction à la sécurité des WebServices
Introduction à la sécurité des WebServicesIntroduction à la sécurité des WebServices
Introduction à la sécurité des WebServicesConFoo
 
0570-les-services-web.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
0570-les-services-web.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0570-les-services-web.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
0570-les-services-web.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbhindguendouz2000
 
Javav formation-java-avance-hibernate-webservices
Javav formation-java-avance-hibernate-webservicesJavav formation-java-avance-hibernate-webservices
Javav formation-java-avance-hibernate-webservicesCERTyou Formation
 
Presentation
PresentationPresentation
Presentationbois
 
Web APIs in Action (in French)
Web APIs in Action (in French)Web APIs in Action (in French)
Web APIs in Action (in French)Restlet
 
S51 vos projets web services ibm i a l aide de php
S51   vos projets web services ibm i a l aide de phpS51   vos projets web services ibm i a l aide de php
S51 vos projets web services ibm i a l aide de phpGautier DUMAS
 
Programmation_JEE_Version_imprimable.pdf
Programmation_JEE_Version_imprimable.pdfProgrammation_JEE_Version_imprimable.pdf
Programmation_JEE_Version_imprimable.pdfngombeemmanuel
 
JEE_chapitre 1.pdf
JEE_chapitre 1.pdfJEE_chapitre 1.pdf
JEE_chapitre 1.pdfiyadamri
 
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbWebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbHINDGUENDOUZ
 
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhxml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhindguendouz2000
 
LemonLDAP::NG et le support SAML2 (RMLL 2010)
LemonLDAP::NG et le support SAML2 (RMLL 2010)LemonLDAP::NG et le support SAML2 (RMLL 2010)
LemonLDAP::NG et le support SAML2 (RMLL 2010)Clément OUDOT
 

Similaire à soapC1.pdfnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn (20)

Soap, wsdl et uddi
Soap, wsdl et uddiSoap, wsdl et uddi
Soap, wsdl et uddi
 
7 rest
7 rest7 rest
7 rest
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Présentation SOA
Présentation SOAPrésentation SOA
Présentation SOA
 
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012
 
Introduction à la sécurité des WebServices
Introduction à la sécurité des WebServicesIntroduction à la sécurité des WebServices
Introduction à la sécurité des WebServices
 
0570-les-services-web.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
0570-les-services-web.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0570-les-services-web.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
0570-les-services-web.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 
Javav formation-java-avance-hibernate-webservices
Javav formation-java-avance-hibernate-webservicesJavav formation-java-avance-hibernate-webservices
Javav formation-java-avance-hibernate-webservices
 
education
educationeducation
education
 
Presentation
PresentationPresentation
Presentation
 
spring.pdf
spring.pdfspring.pdf
spring.pdf
 
Web APIs in Action (in French)
Web APIs in Action (in French)Web APIs in Action (in French)
Web APIs in Action (in French)
 
S51 vos projets web services ibm i a l aide de php
S51   vos projets web services ibm i a l aide de phpS51   vos projets web services ibm i a l aide de php
S51 vos projets web services ibm i a l aide de php
 
03_-_SOA_-_SOAP.pdf
03_-_SOA_-_SOAP.pdf03_-_SOA_-_SOAP.pdf
03_-_SOA_-_SOAP.pdf
 
Programmation_JEE_Version_imprimable.pdf
Programmation_JEE_Version_imprimable.pdfProgrammation_JEE_Version_imprimable.pdf
Programmation_JEE_Version_imprimable.pdf
 
JEE_chapitre 1.pdf
JEE_chapitre 1.pdfJEE_chapitre 1.pdf
JEE_chapitre 1.pdf
 
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbWebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
WebServices.pdfbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 
Web services SOAP et REST
Web services  SOAP et RESTWeb services  SOAP et REST
Web services SOAP et REST
 
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhxml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
xml-webservices-intro.pdfhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
 
LemonLDAP::NG et le support SAML2 (RMLL 2010)
LemonLDAP::NG et le support SAML2 (RMLL 2010)LemonLDAP::NG et le support SAML2 (RMLL 2010)
LemonLDAP::NG et le support SAML2 (RMLL 2010)
 

Dernier

GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéInstitut de l'Elevage - Idele
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...Institut de l'Elevage - Idele
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesInstitut de l'Elevage - Idele
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestionyakinekaidouchi1
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusInstitut de l'Elevage - Idele
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageInstitut de l'Elevage - Idele
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...Institut de l'Elevage - Idele
 

Dernier (15)

GAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversitéGAL2024 - L'élevage laitier cultive la biodiversité
GAL2024 - L'élevage laitier cultive la biodiversité
 
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
GAL2024 - Renouvellement des actifs : un enjeu pour la filière laitière franç...
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
GAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentesGAL2024 - Changements climatiques et maladies émergentes
GAL2024 - Changements climatiques et maladies émergentes
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
comprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestioncomprehension de DDMRP dans le domaine de gestion
comprehension de DDMRP dans le domaine de gestion
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenusGAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
GAL2024 - Situation laitière 2023-2024 : consommation, marchés, prix et revenus
 
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engageGAL2024 - Décarbonation du secteur laitier : la filière s'engage
GAL2024 - Décarbonation du secteur laitier : la filière s'engage
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
GAL2024 - Traite des vaches laitières : au coeur des stratégies d'évolution d...
 

soapC1.pdfnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

  • 2. * Testé avec * JDK13 * TOMEE+ 8.0.1 * Netbeans 11.3 * Springboot 2.2.5 * Également besoin de * Ant(?) * Mvn * Git * PHP * SoapUI Pré-requis
  • 3. * Simples, légers * Appel de ressources via verbes HTTP * Pas d’états (stateless WS) * (http: non connecté) * Sérialisation aux soins du dev. * Pas de normes de sécurité particulière Web services Rest
  • 4. * Répond aux besoins précédents * Ajout du protocole SOAP (XML) au dessus d’HTTP * HTTP n’est plus utilisé, transparent * Définition des sérialisations, des accès (RPC encoded, document/literal, etc.) * Normes de sécurité (WS-Trust, WS-security) * Plus complexe, plus lourds Services Web SOAP
  • 5. * Présentation de WS SOAP * Description WSDL, sérialisation SOAP * Introduction de Frameworks * JAXWS via Netbeans * Apache Axis2 * (fait tout, mais en lcmd, rest en plus) * Springboot Contenu du cours
  • 7. SOAP REST Meaning Simple Object Access Protocol Representational State Transfer Design Standardized protocol with pre-defined rules to follow. Architectural style with loose guidelines and recommendations. Statefulness Stateless and stateful. Stateless (no server-side sessions). Caching API calls cannot be cached. API calls can be cached. Security WS-Security with SSL support. Built-in ACID compliance. Supports HTTPS and SSL. Performance Requires more bandwidth and computing power. Requires fewer resources. Message format Only XML. Plain text, HTML, XML, JSON, YAML, and others. Transfer protocol(s) HTTP, SMTP, UDP, and others. Only HTTP Recommended for Enterprise apps, high-security apps, distributed environment, financial services, payment gateways, telecommunication services. Public APIs for web services, mobile services, social networks. Advantages High security, standardized, extensibility. Scalability, better performance, browser-friendliness, flexibility. Disadvantages Poorer performance, more complexity Less security, not suitable for distributed environments. No standard Soap vs. Rest Tiré en partie de https://raygun.com/blog/soap-vs-rest-vs-json/ Resp: S. SALVA IUT licence pro
  • 8. Utilisation d’HTTP: •Protocole Internet •Beaucoup d’entreprises possèdent un serveur web •Protocole généralement autorisé au niveau de parefeu •Protocole disponible sur toutes les plateformes •Mode non connecté Utilisation d’XML: •Massivement utilisé et reconnu •Permet de structurer l’information facilement Resp: S. SALVA IUT licence pro
  • 9. Implémentations actuelles (SOAP) : Microsoft .Net Sun Metro (JaxWS, etc.) Apache Axis2 et CXF IBM WSTK Oracle, Bea, Iona, Enhydra … Resp: S. SALVA IUT licence pro
  • 10. WS-I Organisation a pour but la normalisation de schémas (XML pour SOAP WSDL) interopérable But: normalisation des messages • WS-I Basic Profile 1.1 – Mode d’utilisation de SOAP, WSDL et UDDI – Support du DOCUMENT/Literal et RPC/Literal – Pas de prise en compte des attachements • WS-I Attachments Profile 1.1 – Couvre la gestion des attachements – Repose sur SOAP 1.1 With Attachments Resp: S. SALVA IUT licence pro
  • 11. Serveur Serveur client client client client client Service web accessible via les protocoles HTTP+SOAP Page jaune de services SOAP avec le protocole UDDI Cycle de vie: 1. Accès à un annuaire UDDI pour localiser un service 2. Récupération de l’interface du service web 3. Appel au service (requète, réponse) Resp: S. SALVA IUT licence pro
  • 12. Annuaire UDDI Client XML 4: envoi d’une requète au service web Requète XML avec SOAP Serveur 2 : requête pour obtenir l’interface du service web 3 : réponse WSDL XML XML 5 : envoi du résultat avec SOAP 1: recherche D’un service web Resp: S. SALVA IUT licence pro
  • 13. •Le concept de service web s’articule autour de 3 protocoles: •SOAP (Simple Object Access Protocol) est un protocole permettant l’échange de données quelquesoit la plateforme. Un appel de service SOAP coorespond à un flux de données XML sur HTTP •WSDL (Web Service Description Language) permet de décrire au format XML les fonctionnalités du service web (méthodes, URLs, signature, port,…) •UDDI (Universal Description Discovery and Integration) normalise un solution d’annuaire des service web •Il existe aussi des protocoles pour XML spécifiques à la sécurité Resp: S. SALVA IUT licence pro
  • 14. Les protocoles, WSDL, SOAP, UDDI
  • 15. Protocole permettant de faire des appels de méthodes de services Web décrits en XML et encapsulés sur HTTP(mode synchrone) ou sur SMTP,JMS(java message service) (mode asynchrone) Serveur Web tomcat SOAP dispatcher execution Client Requètes SOAP Service Provider Resp: S. SALVA IUT licence pro
  • 16. •Service synchrones sur HTTP appels bloquants Pas de garanties de retour principalement utilisé •Service asynchrones sur SMTP, JMS non bloquants garantie de service (1 retour) Resp: S. SALVA IUT licence pro
  • 18. •La balise <SOAP-ENV:Envelope… spécifie le type d’encodage et contient des définitions de namespace •Les entêtes SOAP (optionnelles) permettent d’échanger des informations d’authentification ou de gestion de session •Les balises <SOAP-ENV:Body> … </SOAP-ENV:Body> contiennent le corps du message = description des paramètres, retours des méthodes •La balise de la méthode contient son namespace (MySOAPSERVICE) (nom unique de la méthode sur Internet) puis les paramètres (et surtout leurs types) •Les paramètres peuvent être de plusieurs types et peuvent être plus ou moins complexes (chaîne, tableaux,…) Resp: S. SALVA IUT licence pro
  • 19. Rappel sur les namespaces espace de nommage XML = collection de noms (RFC 2396) utilisés comme type d’éléments et noms d’attribut <x xmlns:edi=‘http://ecommerce.org/schema> </x> Edi est lié à http://... Pour l’élément x et son contenu Namespace préfixes: Soap « http://schemas.xmlsoap.org/soap/envelope/ » Wsdl « http://schemas.xmlsoap.org/wsdl/ » … Resp: S. SALVA IUT licence pro
  • 20. Un exemple de message SOAP en RPC literal <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mh="http://www.Monson-Haefel.com/jwsbook/BookQuote"> <soap:Body> <mh:getBookPrice> <isbn>0321146182</isbn> </mh:getBookPrice> </soap:Body> </soap:Envelope> package com.jwsbook.soap; import java.rmi.RemoteException; public interface BookQuote extends java.rmi.Remote { // Get the wholesale price of a book public float getBookPrice(String ISBN) throws RemoteException, InvalidISBNException; } requête Resp: S. SALVA IUT licence pro
  • 21. SOAP propose différents types d’encodage: •2 types de messages: •RPC: appel d’une méthode d’un objet distant avec passage de paramètres. •Document: plusieurs parties pour l’appel, pour la méthode, pour les paramètres, pas de formatage •Pour les applications qui sérialisent/désérialisent les données (paramètres ou retours), il existe aussi 2 types d’encodage: •SOAP encoded: les données sont sérialisées via des codages SOAP (généralement SOAP RPC) •Literal: données sérialisées par schemas XML. Pas de règles définies. Document/literal choisi par microsoft Resp: S. SALVA IUT licence pro
  • 22. Exemples (trouvé sur ibm.com): On part de cette méthode: public void myMethod(int x, float y); Voici les différents messages (enveloppes) SOAP et descriptions WSDL possibles: La description WSDL contient la structure des appels (RPC) ou le schéma (structure des messages SOAP) XML (Document) Resp: S. SALVA IUT licence pro
  • 23. RPC encoded: SOAP: <soap:envelope> <soap:body> <myMethod> <x xsi:type="xsd:int">5</x> <y xsi:type="xsd:float">5.0</y> </myMethod> </soap:body> </soap:envelope> ÞNon-conforme à WS-I basic profile, peu performant (à cause des types) ÞPb d’interopérabilité ! WSDL: <message name="myMethodRequest"> <part name="x" type="xsd:int"/> <part name="y" type="xsd:float"/> </message> <message name="empty"/> <portType name="PT"> <operation name="myMethod"> <input message="myMethodRequest"/> <output message="empty"/> </operation> </portType> <binding .../> Resp: S. SALVA IUT licence pro deprecated
  • 24. RPC literal: SOAP: <soap:envelope> <soap:body> <myMethod> <x>5</x> <y>5.0</y> </myMethod> </soap:body> </soap:envelope> ÞConforme WS-I basic profile ÞEncodage XML, mais difficile de valider le message (myMethod ?) Document encoded: => Pas utilisé, non-conforme WS-I WSDL: <message name="myMethodRequest"> <part name="x" type="xsd:int"/> <part name="y" type="xsd:float"/%gt; </message> <message name="empty"/> <portType name="PT"> <operation name="myMethod"> <input message="myMethodRequest"/> <output message="empty"/> </operation> </portType> <binding .../> Resp: S. SALVA IUT licence pro deprecated
  • 25. Document literal: WSDL: <types> <schema> <element name="xElement" type="xsd:int"/> <element name="yElement" type="xsd:float"/> </schema> </types> <message name="myMethodRequest"> <part name="x" element="xElement"/> <part name="y" element="yElement"/> </message> <message name="empty"/> <portType name="PT"> <operation name="myMethod"> <input message="myMethodRequest"/> <output message="empty"/> </operation> </portType> <binding .../> SOAP: <soap:envelope> <soap:body> <xElement>5</xElement> <yElement>5.0</yElement> </soap:body> </soap:envelope> Resp: S. SALVA IUT licence pro
  • 26. Document literal: •Conforme WS-I basic profile si une rubrique dans soap:body (ici on en a 2 !) => interopérable •Plus flexible •pas d’encodage déterminé, n’importe quel XML validator peut valider ce message •Perte de l'opération, méthode mappée par rapport a ses paramètres pas possible dans un même service web d'avoir deux méthodes avec la même liste de paramètres Resp: S. SALVA IUT licence pro
  • 27. WSDL: <types> <schema> <element name="myMethod"> <complexType> <sequence> <element name="x" type="xsd:int"/> <element name="y" type="xsd:float"/> </sequence> </complexType> </element> <element name="myMethodResponse"> <complexType/> </element> </schema> </types> <message name="myMethodRequest"> <part name="parameters" element="myMethod"/> </message> <message name="empty"> <part name="parameters" element="myMethodResponse"/> </message> <portType name="PT"> <operation name="myMethod"> <input message="myMethodRequest"/> <output message="empty"/> </operation> </portType> <binding .../> SOAP: <soap:envelope> <soap:body> <myMethod> <x>5</x> <y>5.0</y> </myMethod> </soap:body> </soap:envelope> Document/literal wrapped Resp: S. SALVA IUT licence pro
  • 28. Document/literal wrapped: •L’opération est encapsulé dans un élément XML portant le nom de l’opération Þmeilleure interopérabilité ? •le meilleur de RPC et document literal ? •Proposé par microsoft •Respecte le WS-I basic profile si une rubrique par soap:body (ici c’est bien le cas) •Messages plus complexes => performance ? •Semble la meilleure solution (?) Resp: S. SALVA IUT licence pro
  • 29. •Mais que fau-il utiliser ? 1. Ne pas utiliser Document/literal wrapped avec des méthodes surchargées (=> 2 éléments avec le même nom) utiliser document literal 2. Si méthodes surchargées et renvoi de méthodes => utiliser rpc literal selon quelques tests, RPC literal semble être le plus performant ? 3. Le type RPC encoded peut être interressant pour l’utilisation de données spécifiques (arbres,…) RPC encoded permet de créer un lien entre données (href…) Resp: S. SALVA IUT licence pro deprecated
  • 30. Utilisation des attachments (par email !) •Utilisation pour un gros volume de données en entrée ou sortie du service web •Souvent utilisé pour des services web asynchrones (traitement lourds) •Pas de sérialisation/deserialisation automatique, A faire ! généralement en XML=> découpage en fragments et déserialisation (dans des threads si bq de données) Resp: S. SALVA IUT licence pro
  • 31. Les messages d’erreurs: Messages d’erreurs générés par les destinataires d’un message Message d’erreur: une seul élément erreur dans le Body SOAP Plusieurs codes d’erreurs: client, server, VersionMismatch, MustUnderstand Ex: Client.Authentication Messages d’erreurs supplémentaires: messages HTTP !!!! (400 bad request, 405 method not allowed, 500 internal server error…) Resp: S. SALVA IUT licence pro
  • 32. Un message d’erreur est composé de 4 éléments: • Faultcode (obligatoire) Code d’erreur utilisé par le logiciel (utilisation de la classe SOAPException) • Faultstring (obligatoire) Explication lisible d’un humain • faultactor (optionnel) Erreur en cours de cheminement du message (firewall, proxy, MOM) • Detail Détail de l’erreur non lié au Body du message • Autres D’autres éléments qualifiés par un namespace peuvent être ajoutés Resp: S. SALVA IUT licence pro
  • 33. <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mh="http://www.Monson-Haefel.com/jwsbook/BookQuote" > * <soap:Body> <soap:Fault> <faultcode>soap:Client</faultcode> <faultstring> The ISBN value contains invalid characters </faultstring> <faultactor>http://www.xyzcorp.com</faultactor> <detail> <mh:InvalidIsbnFaultDetail> <offending-value>19318224-D</offending-value> <conformance-rules> The first nine characters must be digits. The last character may be a digit or the letter 'X'. Case is not important. </conformance-rules> </mh:InvalidIsbnFaultDetail> </detail> </soap:Fault> </soap:Body> </soap:Envelope> Un message d’erreur Resp: S. SALVA IUT licence pro
  • 34. Les messages envoyés au serveur seront de la forme SOAP XML de même que les réponses du serveur ÞBesoin de sérialiser les messages. Utilisation simple d’un package SOAP (par héritage) qui fait le travail pour vous Invocation du service en appelant une de ses méthodes grâce au package SOAP en spécifiant l’url du service, les paramètres Le package SOAP sérialise l’invocation, encode le message dans une requète HTTP puis effectue une requête au serveur web à l’url du service web. A la réponse du service web, le package SOAP effectue l’inverse Resp: S. SALVA IUT licence pro
  • 35. Resp: S. SALVA IUT licence pro
  • 36. •Le serveur repose principalement sur un package SOAP identique au client •Il possède en plus un listener (processus d’écoute) en attente de connexion de clients. Ce listener est implanté par une servlet avec Axis •La servlet SOAP extrait le message SOAP-XML, la de-serialise (récupération du nom de la méthode, des paramètres), puis invoque la méthode concernée du service. Le résultat et sérialisé puis renvoyé au client Resp: S. SALVA IUT licence pro
  • 37. Langage XML de description de services web description normalisée qui permet une utilisation inter-plateforme cache le code du web service Regroupe : •Les méthodes du service web •Les paramètres et les valeurs de retour •Le protocole de transfert (SOAP ou autre ) •La localisation Les documents WSDL peuvent être écrits à la main (oupss) mais sont surtout générés Resp: S. SALVA IUT licence pro
  • 38. Un document WSDL est constitué de plusieurs parties (7) qui sont principalement: •L’url du service •Le protocole associé à l’accès au service (SOAP, RPC,…) •Les méthodes du service •Les paramètres d’entrées, sorties et leurs encodages Resp: S. SALVA IUT licence pro
  • 39. Une description WSDL est un document XML qui commence par la balise definition et contient les balises suivantes : • types: cette balise décrit les types utilisés •message: cette balise décrit la structure d’un message échangé •portType: cette balise décrit un ensemble d’opérations (interface d’un service web) •operation: cette balise décrit une opération réalisée par le service web. Une opération reçoit des messages et envois des messages. •binding: cette balise décrit le lien entre un protocole (http) et un portType. •service: cette balise décrit un service comme un ensemble de ports. •port: cette balise décrit un port au travers duquel il est possible d’accéder à un ensemble d’opérations. Un port référence un Binding Resp: S. SALVA IUT licence pro
  • 40. Partie 1: description des types utilisés par le service (tableau, vecteur,…) Exemple: xsd:complexType name="phone"> <xsd:all> <xsd:element name="areaCode" type="xsd:int"/> <xsd:element name="exchange" type="xsd:string"/> <xsd:element name="number" type="xsd:string"/> </xsd:all> </xsd:complexType> Resp: S. SALVA IUT licence pro
  • 41. Partie 2: les messages (ensemble des données transmises) description de la requète HTTP et de la réponse HTTP avec les paramètres mis en jeu <message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> </message> Resp: S. SALVA IUT licence pro
  • 42. Partie 3: les types de port (desc la plus importante) définissent les points de connections au service web (peut être comparé à une classe) Opération type requête réponse (il y en a d’autres): <message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="getTerm"> <input message="getTermRequest"/> <output message="getTermResponse"/> </operation> </portType> Resp: S. SALVA IUT licence pro
  • 43. WSDL définit 4 types d’opération : •One-Way : lorsque les opérations reçoivent des messages mais n’en n’envoient pas •Request-response : lorsque les opérations reçoivent des messages puis renvoient des Messages •Solicit-response : lorsque les opérations envoient des messages puis en reçoivent •Notification : lorsque les opérations envoient des messages mais n’en reçoivent pas •Une opération : Reçoit des messages : <wsdl:input …> Envoie des messages : <wsdl:output …> ou <wsdl:fault …> Resp: S. SALVA IUT licence pro
  • 44. Partie 4: lier une description abstraite (portType) à un protocole. (à la suite du code XML précèdent, on trouve…) <binding type="glossaryTerms" name="b1"> <soap:binding style="document" transport= "http://schemas.xmlsoap.org/soap/http" /> <operation> <soap:operation soapAction="http://example.com/getTerm"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> Type port, nom binding Style: document ou rpc Protocole (http) Opération du port Style d’encodage Resp: S. SALVA IUT licence pro
  • 45. Partie 5: les ports (différents de type de port) définissent l’url chez le fournisseur, effectue la relation entre lien et url Partie 6: partie service qui rassemble l’ensemble des ports <wsdl:service name=« nomservice" > <wsdl:port name=" nomport" binding=" impl: glossaryTerms "> <wsdlsoap: address location=" http://serveur:8080/axis/nomport" /> </wsdl:port> </wsdl:service> Nom du lien Resp: S. SALVA IUT licence pro
  • 46. Resp: S. SALVA IUT licence pro Exemples
  • 47. Resp: S. SALVA IUT licence pro