Upload
ginette-rey
View
117
Download
1
Embed Size (px)
Citation preview
G. Gardarin
Web ServicesObjectifsArchitectureProtocole web (SOAP)Composition de services web SécuritéConclusion
V.2 G. Gardarin
1. Besoins des Applications Web
Le Web classique• Conçu pour les applications à interactions
humaines• Partage d'information• E-commerce de type B2C
Extensions nécessaires• Accès à l'information depuis des programmes• Processus de e-commerce B2B automatisés• Interopérabilité entre applications• Plate-forme pour le calcul distribué
Introduction
V.3 G. Gardarin
Principes des services Web
Proposer une plate-forme de traitement distribuée autour d'Internet/Intranet
Permettre l'interopérabilité totale entre composants
Offrir un modèle de composants simple• Modules avec interfaces de fonctions• Paramètres structurés et diversifiés en place des URL
longues contraignantes (ASCII, plats, 255) Permettre de découvrir dynamiquement les
services• Annuaire de services et service de recherche
Offrir des outils d'intégration de composants A l'échelle de l'Internet ou de l'Intranet
Introduction
V.4 G. Gardarin
Exemple d'applications
Diffusion d'information• horaires, incidents, états de stocks• cours de bourse, entrées d'annuaires, etc.
Contrôle d'information• Autorisation de cartes de crédits• Authentification d'un client
Documentation automatique• présentation, marketing, veille technologique• librairie électronique, manuels, maintenance, etc.• communication et "knowledge management"
Commerce électronique• présentation, sélection, transaction, médiation, etc.
Introduction
V.5 G. Gardarin
2. Architecture Web Services
Architecture
ServiceRequester
ServiceProvider
ServiceProvider
ServiceProvider
ServiceProvider
WEB-HTTP
CLIENT
ServiceRegistry
Request
Request
Request
Request
Publish
Publish
Publish
Publish
Find
SERVEUR
SERVEUR
SERVEUR
SERVEUR
SERVEUR
V.6 G. Gardarin
Qu'est ce qu'un Web Service ?
Définition [W3C]• Un Web service est un composant logiciel identifié par une URI,
dont les interfaces publiques sont définies et appelées en XML.• Sa définition peut être découverte par d'autres systèmes
logiciels. • Les services Web peuvent interagir entre eux d'une manière
prescrite par leurs définitions, en utilisant des messages XML portés par les protocoles Internet.
Exposition• Langage WSDL utilisé pour décrire le service• Similaire à IDL mais basé sur XML
Activation• Protocole Web au-dessus de HTTP (RPC XML, SOAP)• Autres protocoles possibles …
Architecture
V.7 G. Gardarin
Les Composants
Service Provider (Fournisseur de service)• Application s'exécutant sur un serveur et comportant
un module logiciel accessible par IxxNet en XML
Service Registry (Annuaires de service)• Annuaire des services publiés par les providers (UDDI)• Géré sur un serveur niveau application, entreprise ou
mondial
Service Requester (Demandeur de service)• Application cliente se liant à un service et invoquant
ses fonctions par des messages XML (SOAP)
Architecture
V.8 G. Gardarin
Vue d'ensemble
HTTP/S
Descriptionof providersand services
UDDI CategoryCategoryProviderProvider
WSDLService
Publication
WSDLService
Publication
SOAP Transport
SOAP Transport
SOAP Client SOAP Client
XMLService
Call
SOAP Transport
SOAP Transport
ServiceService
ServiceProvider
Applicationdiscovery?
Architecture
V.9 G. Gardarin
Description des services: WSDL
Elément Type• Types des paramètres (schéma XML)
Elément Message• Appel et retour d'opération
Elément Port type• Groupe d'opération
Elément Binding• URL de l'opération• Type de protocole
Architecture
Service
Port(e.g. http://host/svc)
Binding(e.g. SOAP)
Abstract interface
portType
operation(s)
inMessage outMessage
Port
Binding
V.10 G. Gardarin
Description en WSDL
<definitions name = "..." xmlns: …> <types>
<!--Définition des types de données; basés sur ceux des schémas --> … </types>
<message><!--Déclaration des messages (entrées et sorties)--> … </message>
<portType><!--Déclaration des opérations (par association des messages)--> …
</portType> <binding>
<!--Définition de la liaison WSDL – SOAP (noms d'actions et codages)--> </binding>
<service name= " … " ><!--Déclaration des ports (groupes d'opérations et protocoles d'accès)--
>… </service></definitions>
Architecture
V.11 G. Gardarin
Exemple: GetLastTradePrice <?xml version="1.0"?> <definitions name="StockQuote"> <types> <schema> <element name="TradePriceRequest"> <complexType> <all>
<element name="tickerSymbol" type="string"/> </all> </complexType> </element> <element name="TradePrice"> <complexType> <all> <element name="price" type="float"/> </all> </complexType> </element> </schema> </types>
<message name="GetLastTradePriceInput"> <part name="body" element="xsd1:TradePriceRequest"/> </message>
<message name="GetLastTradePriceOutput"> <part name="body" element="xsd1:TradePrice"/> </message>
<portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/> </operation> </portType>
<binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetLastTradePrice"> <soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding>
<service name="StockQuoteService"> <documentation>My first service</documentation> <port name="StockQuotePort" binding="tns:StockQuoteBinding"> <soap:address location="http://example.com/stockquote"/> </port> </service>
</definitions>
Architecture
V.12 G. Gardarin
Annuaire des services: UDDI
Universal Description, Discovery and Integration
Annuaire des services• décrit par un document• WSDL, spec. EJB, autre …
Accessible en SOAP Fonctions
• Enregistrer votre société• Enregistrer des services• Enregistrer des opérations• Découvrir des services• …
Annuaire UDDI
Gérant de requêtes
Enveloppe+
Document
Programme
Dde deService
Annuaire UDDI
Architecture
V.13 G. Gardarin
Contenu de l’annuaire
Pages blanches (businessEntity)• BusinessKey• Name• Description• CategoryBag• BusinessServices
Pages jaunes (businessService)• ServiceKey• BusinessKey• Name• Description• CategoryBag• BindingTemplates
Pages vertes (bindingTemplates)• BindinKey• ServiceKey• Description• AccessPoint
Contenu défini par un schéma XML
Spécifications pour réplication
BusinessEntityBusinessEntity
BusinessServiceBusinessService
BindingTemplatesBindingTemplates
tModeltModel
publisherAssertionpublisherAssertion
Spécifs de services et taxonomies
Relations entre deux parties
Infos techniques
Architecture
V.14 G. Gardarin
Principaux fournisseurs
IBM UDDI Registry• Un registre UDDI avec des fonctionnalités de recherche• www-3.ibm.com/services/uddi/
Microsoft UDDI Business Registry (UBR)• uddi.microsoft.com/default.aspx
SAP UDDI Business Registry• Public pour l'instant
Systinet Registry• Support complet de UDDI V3• www.systinet.com/products/sr/overview
Oracle Application Server UDDI Registry• otn.oracle.com/tech/webservices/htdocs/uddi/
Architecture
V.15 G. Gardarin
Client Web de Recherche
Architecture
V.16 G. Gardarin
3. SOAP
Inspiré du RPC DCE adapté à XML• Appel de procédure distante sur Internet
Appelant
Appelé
Appelant
Appelé
Souche Réseau d'interconnexion
Souche
Stub ouProxy
Skeleton ouListener
SOAP
V.17 G. Gardarin
Qu'est-ce-que SOAP ?
Simple Object Access Protocol • Ni simple, ni objet …
Invocations de fonctions en XML au-dessus de HTTP :• Pour accéder services, objets et serveurs• Indépendant de toute plate-forme
Codage universel XML par opposition aux spécifiques :• DCOM - DCE/NDR• CORBA - IIOP/CDR• JAVA - RMI/JRMP• RDA - XDR
Résolution des problèmes de session, sécurité, transaction …
Associé à WSDL pour publication d'interfacesSOAP
V.18 G. Gardarin
Un échange type
Application Cliente
Parser XML
Procuration
d'interface
Translateur
SOAP
Parser XML Serveur
d'application
Messages
SOAPAppel
Réponse
HTTP
RPC
local
Port de connexion (URL)
Pare-feu Pare-feu
SOAP
CLIENT SERVEUR
V.19 G. Gardarin
Eléments d'un message
Envelope• Élément pouvant contenir des déclarations
d'espaces de noms ou des sous-éléments
Header• Élément optionnel fils de Envelope• Permet des extensions telles que authentification,
session, etc.
Body • Élément obligatoire fils de Envelope• Définit la méthode appelée, contient les paramètres• Peut contenir un élément Fault en cas d'erreur
SOAP
V.20 G. Gardarin
Structure d'un message
Protocol Headers
SOAP Envelope
SOAP Header
SOAP Body
Entête de protocoles (HTTP, SMTP, …)
<Envelope>
<Header>
<Body>
SOAP
V.21 G. Gardarin
Exemple
www.stockquoteserver.comfloat GetLastTradePrice (Symbol)
Le dialogue :
Application
Middleware
SOAP
HTTP
Application
Middleware
SOAP
HTTP
www.stockquoteserver.com
Request
Reply
Error
www.xquark.org
SOAP
V.22 G. Gardarin
La requête POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.comContent-Type: text/xml; charset="utf-8"Content-Length: nnnn
SOAPAction: "Some-URI#GetLastTradePrice"
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap"> <SOAP:Body> <m:GetLastTradePrice xmlns:m="Some-URI"> <symbol>DIS</symbol> </m:GetLastTradePrice> </SOAP:Body></SOAP:Envelope>
Standard HTTP
SOAP
V.23 G. Gardarin
La réponse
HTTP/1.1 200 OKContent-Type: text/xml; charset="utf-8"Content-Length: nnnn
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap"/> <SOAP:Body> <m:GetLastTradePriceResponse xmlns:m="Some-URI"> <Price>34.5</Price> </m:GetLastTradePriceResponse> </SOAP:Body></SOAP:Envelope>
Standard HTTP
SOAP
V.24 G. Gardarin
Exemple: Google
Search requests • Soumet une requête avec un ensemble de
paramètres à Google Web APIs service et reçoit en réponse un ensemble de résultats de recherche.
Cache requests • Soumet une URL à Google Web APIs service et
reçoit en réponse le contenu de l'URL lors de la dernière visite du crawler Google.
Spelling requests • Soumet une requête à Google Web APIs service et
reçoit en réponse une suggestion de correction orthographique pour la requête.
SOAP
V.25 G. Gardarin
Bilan SOAP Protocole d’invocation
de services Web • Lisible et extensible• Au-dessus de HTTP• Passant les firewalls• Description en WSDL• Pousser par Microsoft,
IBM, BEA, … CORBA ou DCOM « killer
»?• Associé à nomination des
objets• Véritable échange de
messages entre objets• Performance ?
Questions ?
SOAP
V.26 G. Gardarin
4. Stratégie des constructeurs
Outil de développement .NET• .net Framework SDK
(//msdn.microsoft.com/webservices)• Support depuis Visual Studio .Net• Développement en tout langage (VB, C++, C#)• Deux composants essentiels
Common Language Runtime (MSIL) .net class Libraries (GUI, DB, ASP, …)
Au cœur des systèmes MS• Evolution de DNA vers .net, Visual Studio.net, …• Compilation des langages MS en MSIL• Machine virtuelle pour l'exécution• Semblable à Java mais MS
Stratégie
V.27 G. Gardarin
Architecture .NET
VB C++ JScript …C#
ASP.NET ADO.NETBCL.NET
Common Language Runtime (CLR)
Windows et COM+ Services
SOAP&
XML
Toolkits
VisualStudio.NET
Stratégie
V.28 G. Gardarin
Infrastructure Système
Gestion des Données
Infrastructure Applicative
Infrastructure “Information Worker”Infrastructure “Information Worker”
Ou
tils
de d
évelo
pp
em
en
tO
uti
ls d
e d
évelo
pp
em
en
t
Ad
min
istr
ati
on
et
Sécu
rité
Ad
min
istr
ati
on
et
Sécu
rité
Pat
tern
& D
esig
n,
AS
P.N
ET
Web
Mat
rix,
AS
P.N
ET
sta
rter
kit
, Co
mm
un
auté
s
Applications Applications
PartenairesPartenaires
Exemple: plate-forme d’Entreprise MS
UnixUnix
LinuxLinux OS390OS390
AS400AS400
Web ServicesWeb Services
V.29 G. Gardarin
Statégie J2EE de SUN, IBM, …
Offrent un ensemble d'API pour Java2 et XML (JAX)• Java API for XML Processing (JAXP)
Parsers, Processeur de feuilles de style
• Java Architecture for XML Binding (JAXB) Mapping de XML sur des objets Java
• Java API for XML Messaging (JAXM) Echange de messages SOAP
• Java API for XML-based RPC (JAX-RPC) Génération de WSDL
• Java API for XML Registries (JAXR) Accès à l'annuaire UDDI
Stratégie
V.30 G. Gardarin
Produits J2EE
Apache AXIS (Open Source)• Servlet permet de déployer les services• Appel servlet depuis SOAP
Intégrés aux serveurs d'applications• API JAX chez IBM, BEA, Oracle, SUN, …• Equivalent de .NET dans le monde Java (JSP ~ ASP) • Nombreux assistants et outils
Stratégie
V.31 G. Gardarin
Architectures inter-opérables
Serveur de présentation
XML
XML
HTML
Stratégie
…
Java, C++, C#, Word, Excel, …
WEB SERVICESJ2EE
XMLVisual studio
WEB SERVICES.NET
V.32 G. Gardarin
Position des constructeurs Composants métiers
appelables par message XML
Encapsulent les applications existantes
Début du développement des architectures SOA
Agilité du système d'information
Développement des workflows de coopération
Completeness of VisionCompleteness of Vision
Challengers Leaders
Niche Players Visionaries
Ab
ilit
y t
o E
xecu
t eA
bi l
i ty
to
Exe
cut e
OracleOracle
IBMIBM
HPHP
BEA
MicrosoftMicrosoft
CACA
SiebelSiebelPeoplesoftPeoplesoft
NovellNovell
SAPSAPFujitsuFujitsu
SunSun
Conclusion
V.33 G. Gardarin
Exemple d'application: Dollar Rent a Car
6e société US de location
400 sites dans 26 pays, 260 sites US; +75.000 véhicules
$750MM de revenu en 2001
Réservation à travers GDS
Une alternative à GDS:les services Web XML
Lien direct avec les partenaires… 25 en 2 mois.
Dollar Rent a CarDollar Rent a CarVaxVMSVaxVMSFrontal WSFrontal WS
ACMSACMSXML / SOAPXML / SOAP
SouthWestSouthWest
GGloballobalDDistributionistributionSSystemsystems
SabreSabre WorldspanWorldspanAmadeusAmadeus GalileoGalileo
XML / SOAPXML / SOAP
NorthWestNorthWest$4
Conclusion
V.34 G. Gardarin
Ligue de Football Professionnel
Ligue de Football Professionnel (CA 990M Euros) rebâtit son système de billetterie en .NET: • Système dimensionné et validé pour 8000
ventes/minutes
Un nouveau système qui simplifie le développement de nouveaux canaux/ partenariat :• Interopérabilité via Services Web avec les réseaux
TicketNet et France Billet
Conclusion
V.35 G. Gardarin
5. Processus métiers Objectifs
• Modéliser des processus métiers (business process)
• Composer des services Web distribués
• Piloter l'exécution Orchestration d'activités Echanges XML Gestion de transactions
• Business Process Management
Transaction Workflow
Exemple : réservation
BPM
Début
RéserverAvion
LouerVoiture
RéserverTrain
RéserverHotel
OK ?
OK ?
OK ?
OK ?
Echec
Echec
Echec
Succès
oui
oui
oui
oui
non
non
non
non
V.36 G. Gardarin
Exemple : Pilotage Fabrication
Fournisseur
ERP
Usine
Partenaire
Echange B2B
Mainframe
Serveur d'entreprise
InterfaceXML
XML
XML
XML
XML
XML
Client
WEB
BPM
V.37 G. Gardarin
Les briques à standardiser
Description
HTTP, IIOP, JMS, SMTP Transport
XMLMessage
SOAP
WSDL
UDDI Discovery
Transactions
CoordinationWS-SecurityWS-ReliabilityQuality ofService
Orchestration - BPEL4WS
BusinessProcesses
Context
Description
Man
agem
ent
Choreography - CDL4WS
V.38 G. Gardarin
Composition de services
Objectifs:• Alliances entre business pour offrir des services
intégrés à valeur ajoutée en combinant des services existants
• Réutilisation et extension de services existants • Support pour la planification, la définition et
l'implémentation de services composés• Développement d'applications distribuées
composées de services web
BPM
V.39 G. Gardarin
Quelques définitions
Processus métier (Business Process)• Module fonctionnel réalisé par enchaînement
d'activités business exécutées par des acteurs échangeant des messages et implémentant les objets et règles spécifiques à une entreprise.
Orchestration d'activité (Activity Orchestration)• Mécanisme d'invocation, de contrôle et de
coordination des activités participant à la réalisation de processus d'affaire.
Composition de services (Services Composition)• Techniques permettant d'assembler des services Web
pour réaliser des processus métiers par des primitives de contrôles (boucles, tests, traitement d'exception, etc.) et d'échanges (envoi et réception de messages).
BPM
V.40 G. Gardarin
Modélisation par Workflow
Graphe acyclique d'activités modélisant un processus métier
BPM
Les activités représentent les unités de traitement
Les liens de données définissent le flux d'information.
[ WS]
Les activités peuvent être d'autres business process
Les liens de contrôle définissent le flux d'exécution
Les activités correspondent à des services Web
V.41 G. Gardarin
Exemple
Modélisation en XML• Langage d'orchestration • Chorégraphie d'activités
<activity name="demandePaiement">
<join condition=”(reserverVoiture OR reserverAvion) AND reserverHotel” when=”deferred”>
</activity>
<activity name="reserverAvion">….
commandeVacances
reserverHotelreserverVoiture reserverAvion
demandePaiement
BPM
Commande/classe=1Commande/classe=2
reserverVacances
V.42 G. Gardarin
Vers un standard ?
BPM
2000/05
XLang(Microsoft)
2001/03
BPML(Intallio et al)
2001/05
WSFL(IBM)
2001/06
BPSS(ebXML)
2002/03
BPEL4WS 1.0 (IBM, Microsoft)
BPEL4WS 1.1(OASIS)
2002/06 2003/01
WS-Choreography(W3C)
2003/04
WSCI(Sun et al)
WSCL(HP)
2002/08
V.43 G. Gardarin
BPEL: Processus composé d'activités
Compositions des web services synchrones et asynchrones
Véritable langage de programmation parallèle codé en XML
Assignation de variables locales et globales
BPM
V.44 G. Gardarin
Exemple BPEL
<sequence> <receive partnerLink=“customer” portType=“lns:purchaseOrderPT" operation=“sendPurchaseOrder” variable=“PO” createInstance="yes" /> <flow> <invoke partnerLink=“inventoryChecker” portType=“lns:inventoryPT” operation="checkINV" inputVariable="inventoryRequest" outputVariable="inventoryResponse" /> <invoke partnerLink="creditChecker" portType=“lns:creditPT" operation="checkCRED" inputVariable="creditRequest" outputVariable="creditResponse" /> </flow> ... <reply partnerLink=“customer” portType=“lns:purchaseOrderPT” operation=“sendPurchaseOrder” variable=“invoice"/>
</sequence>
BPM
V.45 G. Gardarin
Qualité de services
Nécessité de fiabiliser• Les messages (WS-Reliability)• Les activités (WS-Transactions)
Courtes (Atomic Transactions) Longues (Business Activity)
Nécessité de sécuriser• Les échanges confidentiels (WS-Security)
BPM
V.46 G. Gardarin
Bilan Processus Métiers
De multiples propositions• un domaine chaud (voir
SOA)
BPEL s'impose comme un standard de fait
Vers trois standards pour la qualité de services• WS-Reliable Messaging• WS-Transactions• WS-Security
Questions ?
BPM
V.47 G. Gardarin
6. Protocoles de sécurité
Ensemble de protocoles pour sécuriser les échanges
Intégration aux services Web • WS-Security
Englobe les standards :• XKMS (XML Key Management Specification)
spécification conjointe du W3C et de l'IETF pour intégrer la gestion de clés et certificats aux applications XML.
délégation du traitement de la sécurité à un service spécialisé sur Internet offrant des services de gestion de clés publiques, certificats et signatures, accessible en SOAP.
• XML Signature• XML Encryption
Protocole Sécurité
V.48 G. Gardarin
XML Signature
Qu'est-ce que XML Signature ?• Standard du W3C et de l'IETF• Signature de message en XML• Architecture PKI sous-jacente
Principes• Appliquées à des "data objects" arbitraires• Data objects sont placés dans un élément• Cet élément est signé • La signature est placée dans un élément signature
Protocole Sécurité
V.49 G. Gardarin
Principe des signatures
L'égalité des résumés (digests) garantit que l'émetteur connaît la clé secrète de A, donc qu'il s'agit de A.
Document
HRésumé
SignatureCsA
CPBDocument
Signature
CsB
HRésumé
RésuméCPA
on compare
A B
Protocole Sécurité
V.50 G. Gardarin
Structure du message
Protocole Sécurité
<Signature> <SignedInfo>
(CanonicalizationMethod) (SignatureMethod) (<Reference (URI=)? >
(Transforms)?(DigestMethod)
(DigestValue) </Reference>)+
</SignedInfo> (SignatureValue) (KeyInfo)? (Object)*
</Signature>
Décrit chaque objet à signer,en particulier sa localisation
Définit la liste des transformations appliquées à l'objet avant calcul du digest
Référence la méthode de calcul du digest
Contient la valeur du digest de l'objet
Contient la valeur du résumé de l'élément <SignedInfo> chiffré
Définit les clés de chiffrements nécessaires au calcul de la signature
Indique la méthode de canonisation des objets
Définit l'algorithme utilisé pour transformer l'élément SignedInfo canonisé en SignatureValue
Ouvre la signature électronique
Englobe l'information signée
V.51 G. Gardarin
XML Encryption
Recommandation du W3C Protocole d'échange des
clés de cryptage• Clé publiques• Valeurs des données
cryptées• Algorithmes de cryptage
Chaque élément peut être crypté• Possibilité de crypter à
tout niveau• Clé symétrique ou
asymétrique
Exemple simple:<?xml version='1.0'?> <PaymentInfo>
<Name>John Smith <Name/> <EncryptedData> <CipherData>
<CipherValue>A23B45C56
</CipherValue> </CipherData> </EncryptedData>
</PaymentInfo>
Protocole Sécurité
V.52 G. Gardarin
7. En résumé ... Invocation dynamique de
services WEB décrits en WSDL
SOAP est le protocole d'invocation (WP) sur HTTP
Intégrité et typage des données (schémas XML)
Possibilité de découvrir dynamiquement les services (UDDI)
Lisibilité et sécurité renforcée (standard de cryptage)
Indépendance des constructeurs (W3C)
Intégration des workflows Ajout de contrôle qualité
(transactions, sécurités)
Questions ?
Conclusion