Upload
brigitte-gallois
View
106
Download
2
Embed Size (px)
Citation preview
Interopérabilité des plateformes JavaEE et . NET
Implémentation des spécifications avancées des services Web avec GlassFish et WCF
Interopérabilité des plateformes JavaEE et . NET
Implémentation des spécifications avancées des services Web avec GlassFish et WCF
Alexis MOUSSINE-POUCHKINESUNArchitecte
Stéphane GOUDEAUMicrosoft France Architecte
Alexis MOUSSINE-POUCHKINESUNArchitecte
Stéphane GOUDEAUMicrosoft France Architecte
AgendaAgenda
IntroductionIntroduction
Web Services AvancésWeb Services Avancés
Démos WS-*Démos WS-*
GlassFish & WCFGlassFish & WCF
SynthèseSynthèse
AgendaAgenda
IntroductionIntroduction
Web Services AvancésWeb Services Avancés
Démos WS-*Démos WS-*
GlassFish & WCFGlassFish & WCF
SynthèseSynthèse
Un besoin d’interopérabilité…Un besoin d’interopérabilité…
Couplage faibleCouplage faible
PerformancesPerformances
Politiques Politiques d’utilisationd’utilisation
CoûtCoût
Critères de choixCritères de choix
StandardsStandards
ExistantExistant
Partage Partage de de
contratcontrat
AgendaAgenda
IntroductionIntroduction
Web Services AvancésWeb Services Avancés
Démos WS-*Démos WS-*
GlassFish & WCFGlassFish & WCF
SynthèseSynthèse
7
Technologie permettant à des applications de dialoguer avec un modèle de couplage faible, par l’échange de messages fondé sur des standards :
XML, SOAP, WSDL, UDDI
Indépendance des plates-formes et des langagesTechnologie pour l’entreprise universellement adoptée ?
““Web services will become the dominant distributed Web services will become the dominant distributed computing architecture in the next 10 years and will computing architecture in the next 10 years and will eventually define the fabric of computing.” eventually define the fabric of computing.”
– – IDCIDC
Services WebServices Web
8
Interoperabilitéhttp://www.WS-i.org Interoperabilitéhttp://www.WS-i.org
Effort de l’industrieAccélérer l’adoption et garantir l’interopérabilité des services Web
Plus 160 leaders de l’industrie Partenariat avec les organismes de standardisation: OASIS, OMG, OMA, RosettaNet
Profils regroupant un ensemble de standards avec leur recommandation d’utilisation
Basic ProfileSOAP 1.1, WSDL 1.0, UDDI 2.0, XML 1.0 et XML SchemaMise à disposition par les éditeurs de modèles de mise en œuvre vis-à-vis de leur implémentation SOAP Mise à disposition d’outils de test
Basic Security Profile
Attachements Profile
Simple SOAP Binding Profile
Effort de l’industrieAccélérer l’adoption et garantir l’interopérabilité des services Web
Plus 160 leaders de l’industrie Partenariat avec les organismes de standardisation: OASIS, OMG, OMA, RosettaNet
Profils regroupant un ensemble de standards avec leur recommandation d’utilisation
Basic ProfileSOAP 1.1, WSDL 1.0, UDDI 2.0, XML 1.0 et XML SchemaMise à disposition par les éditeurs de modèles de mise en œuvre vis-à-vis de leur implémentation SOAP Mise à disposition d’outils de test
Basic Security Profile
Attachements Profile
Simple SOAP Binding Profile
9
WS-* : La cible est atteinte…WS-* : La cible est atteinte…
Transports HTTP Transports HTTP
XML XML, XSD, XPath XML XML, XSD, XPath
Messaging SOAP, WS-Addressing, WS-EventingMessaging SOAP, WS-Addressing, WS-Eventing
SecurityWS-Security
WS-TrustWS-Federation
SecurityWS-Security
WS-TrustWS-Federation
ReliabilityWS-ReliableMessaging
ReliabilityWS-ReliableMessaging
TransactionsWS-TransactionsWS-Coordination
WS-AtomicTranscation
TransactionsWS-TransactionsWS-Coordination
WS-AtomicTranscation
Meta
data
WS
DL,
WS
-Policy,
WS
-Dis
covery
Meta
data
WS
DL,
WS
-Policy,
WS
-Dis
covery
Connected Systems
Management
Business Processes
Dans la vraie vie…Dans la vraie vie…W3C Simple Object Access Protocol (SOAP) 1.2
W3C Web Service Description Language (WSDL) 1.1
Asynchronisme (et routage des messages)W3C WS-Addressing (W3C Member Submission 10 August 2004)
Transmission de pièces jointes (et encodage/optimisation)
W3C SOAP Message Transfer Optimization Mechanism (MTOM)
W3C XML-binary Optimized Packaging (XOP) 1.0
Fiabilité des échangesOASIS Web Services Reliable Messaging (WS-ReliableMessaging)
Sécurité du messageOASIS Web Services Security: SOAP Message Security 1.0 (WS-Security)
W3C Simple Object Access Protocol (SOAP) 1.2
W3C Web Service Description Language (WSDL) 1.1
Asynchronisme (et routage des messages)W3C WS-Addressing (W3C Member Submission 10 August 2004)
Transmission de pièces jointes (et encodage/optimisation)
W3C SOAP Message Transfer Optimization Mechanism (MTOM)
W3C XML-binary Optimized Packaging (XOP) 1.0
Fiabilité des échangesOASIS Web Services Reliable Messaging (WS-ReliableMessaging)
Sécurité du messageOASIS Web Services Security: SOAP Message Security 1.0 (WS-Security)
ALLERALLERDESERIALIZE (XML DESERIALIZE (XML natif) natif)Interception (avant et après) !Interception (avant et après) !
RETOURRETOURSERIALIZE (natifSERIALIZE (natif XML) XML)
Interception (avant et Interception (avant et après) !après) !
ALLERALLERSERIALIZE (natifSERIALIZE (natif XML) XML)
Interception (avant et Interception (avant et après) !après) !
RETOURRETOURDESERIALIZE (XML DESERIALIZE (XML natif) natif)
Interception (avant et Interception (avant et après) !après) !
Fournisseur WSFournisseur WSClient WSClient WS<FlightInfo><FlightInfo> <flightNo/><flightNo/> <departTime/><departTime/> <.../><.../></FlightInfo></FlightInfo>
<FlightInfo><FlightInfo> <flightNo/><flightNo/> <departTime/><departTime/> <.../><.../></FlightInfo></FlightInfo>
Extensions SOAPExtensions SOAP
““serialize”serialize”““serialize”serialize”
““deserialize”deserialize”““deserialize”deserialize”
FlightInfo FlightInfo
““deserialize”deserialize”““deserialize”deserialize”
““serialize”serialize”““serialize”serialize”
Utilisée pour des fonctionnalités plus avancéesIntercepte les appels destinés à un service WebPrétraitement et post-traitement
Utilisée pour des fonctionnalités plus avancéesIntercepte les appels destinés à un service WebPrétraitement et post-traitement
12
Don
nées
Don
nées
str
uctu
rées
str
uctu
rées C
ad
re log
isti
qu
eC
ad
re log
isti
qu
e
<?xml version="1.0" encoding="UTF-8" ?> <env:Envelope
xmlns:env="http://www.w3.org/2001/09/soap-envelope">
<env:Header> <n:alertcontrol xmlns:n="http://example.org/alertcontrol"> <n:priority>1</n:priority><n:expires>2001-06-22T14:00:00-05:00</n:expires> </n:alertcontrol>
</env:Header> <env:Body> <m:alert
xmlns:m="http://example.org/alert"> <m:msg>Pick up Mary at school at 2pm</m:msg> </m:alert>
</env:Body> </env:Envelope>
<?xml version="1.0" encoding="UTF-8" ?> <env:Envelope
xmlns:env="http://www.w3.org/2001/09/soap-envelope">
<env:Header> <n:alertcontrol xmlns:n="http://example.org/alertcontrol"> <n:priority>1</n:priority><n:expires>2001-06-22T14:00:00-05:00</n:expires> </n:alertcontrol>
</env:Header> <env:Body> <m:alert
xmlns:m="http://example.org/alert"> <m:msg>Pick up Mary at school at 2pm</m:msg> </m:alert>
</env:Body> </env:Envelope>
Sécu
rité
Fiab
ili
té
Tran
sact
ions
Routa
ge
ConsommateurConsommateur
FournisseurFournisseur
SOAP ExtensionsSOAP Extensions
SOAP ExtensionsSOAP Extensions
Implémentation des WS-*Implémentation des WS-*
AgendaAgenda
IntroductionIntroduction
Web Services AvancésWeb Services Avancés
Démos WS-*Démos WS-*
GlassFish & WCFGlassFish & WCF
SynthèseSynthèse
Web Services dans Java EE 5Web Services dans Java EE 5JAX-WS 2.x est l'évolution de JAX-RPC 1.x
JAX-WS sous-ensemble de Java EE 5EJB 3, Servlet, JSP, JDBC/JPA, JAXB, ...
JAX-WS est également présent dans le JDK 6
Annotations, Web Services asynchrones, ...
JAXB pour les conversions XML/Java
Logique MétierLogique Métier
Classes AnnotéesFortement Typées
Couche MessageAPI Dispatch/Provider
Simple Web Service JAX-WSSimple Web Service JAX-WS
package endpoint;
import javax.jws.WebService;
@WebServicepublic class Bonjour {
public String ditBonjour(String nom) { return "Bonjour " + nom; }
}
GlassFish est un serveur d'application Open Source de production conforme à Java EE 5
WSIT est une extension à JAX-WS 2.x intégrée dans GlassFish v2 (beta)
Implémentation de WS-Addressing, WS-Security, WS-SecureConversation, WS-ReliableMessaging, WS-MetaDataExchange, MTOM/XOP, WS-Trust, WS-Policy,...
Pas de modification du modèle de programmation JAX-WS (déclaratif)
Outil associé :NetBeans 5.5.1 (http://www.netbeans.org)
GlassFish et WSIT
Windows Communication Foundation (WCF)Windows Communication Foundation (WCF)
Composante du Microsoft .NET Framework 3.0 : Windows Vista, Windows XP SP2, Windows Server 2003 SP1Framework unifié pour créer des Applications Orientées Service interopérablesUnification des technologies middlewareArchitecture modulaire et composableSupport natif des protocoles des services Web avancés WS-*Modèle de programmation orienté service
Composante du Microsoft .NET Framework 3.0 : Windows Vista, Windows XP SP2, Windows Server 2003 SP1Framework unifié pour créer des Applications Orientées Service interopérablesUnification des technologies middlewareArchitecture modulaire et composableSupport natif des protocoles des services Web avancés WS-*Modèle de programmation orienté servicehttp://www.microsoft.com/downloads/details.aspx?FamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&displaylang=en
Visual Studio 2005 extensions for .NET Framework 3.0 Visual Studio 2005 extensions for .NET Framework 3.0
WCF : Principes et outilsWCF : Principes et outils
WSDL
Point de terminaison
Client Service
B
« Binding »Comment ?
C
ContratQuoi ?
A
AdresseOù ?
« Behavior »Environnement
d’exécution
BeB ACBe
A CB
A CB
http://www.microsoft.com/downloads/details.aspx?FamilyId=F54F5537-CC86-4BF5-AE44-F5A1E805680D&displaylang=en
AgendaAgenda
IntroductionIntroduction
Web Services AvancésWeb Services Avancés
Démos WS-*Démos WS-*
GlassFish & WCFGlassFish & WCF
SynthèseSynthèse
Quelle démarche adopter ?Quelle démarche adopter ?Définition du contrat
Contrat de serviceDescription des opérations et sémantique des échanges (« oneway », « duplex », session, …)
Contrat de donnéesDéfinition du contenu des messages
Contrat d’utilisationCaractéristiques de la communication : fiabilité, sécurité, encodage, transport,…
Implémentation du Service
Développement
Déploiement
Publication du WSDL
Définition du contratContrat de service
Description des opérations et sémantique des échanges (« oneway », « duplex », session, …)
Contrat de donnéesDéfinition du contenu des messages
Contrat d’utilisationCaractéristiques de la communication : fiabilité, sécurité, encodage, transport,…
Implémentation du Service
Développement
Déploiement
Publication du WSDL
Comment optimiser les WS …?Comment optimiser les WS …?Comment transporter efficacement des objets binaires avec des services web ?
Par défaut : Encodage base64 MTOM : Message Transmission Optimization Mechanism
Données présentes dans l’InfoSet XML
Transfert des données - sans ré-encodage - à l’extérieur de l’enveloppe SOAP, en utilisant un message de type « MIME multipart related »
Comment transporter efficacement des objets binaires avec des services web ?
Par défaut : Encodage base64 MTOM : Message Transmission Optimization Mechanism
Données présentes dans l’InfoSet XML
Transfert des données - sans ré-encodage - à l’extérieur de l’enveloppe SOAP, en utilisant un message de type « MIME multipart related »
ENVELOPPE SOAPENVELOPPE SOAP
DONNES BINAIRES
MIME MULTIPART
DONNES BINAIRES (encodé en base64)
GlassFish WSIT : MTOM
<binding name="prestoMtomBinding"> <mtomMessageEncoding messageVersion= "Soap12WSAddressingAugust2004" writeEncoding="utf-8"> <readerQuotas maxArrayLength="5000000" /> </mtomMessageEncoding> <httpTransport maxReceivedMessageSize="5000000" … /> </binding>
WCF : mise en place de MTOMWCF : mise en place de MTOM
Contrat : Paramètre ou propriétés d’objets de type byte[ ]Binding : Encodage de type MTOM
Contrat : Paramètre ou propriétés d’objets de type byte[ ]Binding : Encodage de type MTOM
MtomMessageEncodingBindingElement mtomEncodingBindingElement = new MtomMessageEncodingBindingElement(); mtomEncodingBindingElement.WriteEncoding = System.Text.Encoding.UTF8; mtomEncodingBindingElement.ReaderQuotas.MaxArrayLength = maxMessageSize; encodingBindingElement = mtomEncodingBindingElement;
Programmation
Programmation
Configuration
Paramétrage par code ou par configurationParamétrage par code ou par configuration
WS-RM : Principe de fonctionnementWS-RM : Principe de fonctionnement
Différent du modèle de file d’attente (pas de tiers explicite)Agent RM source et Agent RM destinationLa séquence complète est acquittée, donc peu d’« overhead » sur une séquence de messages
« CreateSequence »
Flow de Messages avec des headers de « Sequence », complétés par des acquittements occasionnels
TerminateSequence
Différent du modèle de file d’attente (pas de tiers explicite)Agent RM source et Agent RM destinationLa séquence complète est acquittée, donc peu d’« overhead » sur une séquence de messages
« CreateSequence »
Flow de Messages avec des headers de « Sequence », complétés par des acquittements occasionnels
TerminateSequence
GlassFish WSIT : WS-RMGlassFish WSIT : WS-RM
TerminateSequence explicite :((Closeable)port).close();
WCF : Reliable MessagingWCF : Reliable Messaging
« ReliableSession BindingElement »Premier élément de la collection de bindingsParamétrage par code ou par configuration
« ReliableSession BindingElement »Premier élément de la collection de bindingsParamétrage par code ou par configuration
<binding name="prestoReliableBinding"> <reliableSession acknowledgementInterval="00:00:00.2000000“ … flowControlEnabled=“true“
ordered="false" />
RM par configuration
ReliableSessionBindingElement reliableSessionBindingElement = null; reliableSessionBindingElement = new ReliableSessionBindingElement(); … reliableSessionBindingElement.FlowControlEnabled = true; reliableSessionBindingElement.Ordered = true; elements.Add(reliableSessionBindingElement);
Transport par code
Transport par code
Sécurité des services WebSécurité des services Web
AuditProtection des
données sensibles
Prévention de la manipulation des
paramètres
Authentification des utilisateurs
Application
Prévention du hijacking de session et d’attaque
de type replay
Autorisation des utilisateurs
Gestion des exceptions
Protection des données sensibles
Authentification et autorisation des
identités
Serveur de données
Base de données
Serveur d’application
Application
Serveur Web
Service WCF
Configuration de la sécurité
Validation de la saisie
Chiffrement des données sensibles
Modes de sécuritéModes de sécurité
Client A Service
B AC A CB
Client B
B AC A CB
Transport
Message
Sécurité de niveau TransportSécurité de niveau Transport
HTTPS, SSL over TCPDépendance du transport
Compatible avec les systèmes existants
S’applique au message dans son ensemble
Confidentialité, intégrité et/ou authentification
Point à point
HTTPS, SSL over TCPDépendance du transport
Compatible avec les systèmes existants
S’applique au message dans son ensemble
Confidentialité, intégrité et/ou authentification
Point à point
Client Service
Chiffré/Signé
Sécurité de niveau MessageSécurité de niveau Message
Sécurité des services Web avancés (WS-*)Appliquée au niveau des messages SOAP
Indépendante du transport et extensible
Sécurisé jusqu’au destinataire ultime du messageL’expéditeur ne doit faire confiance qu’au destinataire ultimeSécurisation de façon sélective : partie(s) du messageConfidentialité, intégrité, non-répudiation et/ou authentification
Sécurité des services Web avancés (WS-*)Appliquée au niveau des messages SOAP
Indépendante du transport et extensible
Sécurisé jusqu’au destinataire ultime du messageL’expéditeur ne doit faire confiance qu’au destinataire ultimeSécurisation de façon sélective : partie(s) du messageConfidentialité, intégrité, non-répudiation et/ou authentification
Client Service
Chiffré/Signé
Nœud intermédiaire
Chiffré/Signé
Standards sécurité WS-* dans WSIT et WCFStandards sécurité WS-* dans WSIT et WCF
OASIS Web Services Security SOAP Message Security (WS-Security) 1.0 et 1.1
Intégrité, confidentialité, et inclusion d’un jeton de sécuritéCouple utilisateur / mot de passe, X.509, Kerberos et SAML
OASIS WS-TrustObtention et renouvellement d’un jeton de sécurité
OASIS WS-SecureConversationEtablissement d’un contexte de sécurité et échange des clés de session permettant d’échanger N messages dans un même contexte
OASIS WS-SecurityPolicyDescription des assertions spécifiques à la sécurité, utilisées dans WS-Security, WS-Trust, et WS-SecureConversation
WS-I Basic Security ProfileCore + Kerberos + SAML
OASIS Web Services Security SOAP Message Security (WS-Security) 1.0 et 1.1
Intégrité, confidentialité, et inclusion d’un jeton de sécuritéCouple utilisateur / mot de passe, X.509, Kerberos et SAML
OASIS WS-TrustObtention et renouvellement d’un jeton de sécurité
OASIS WS-SecureConversationEtablissement d’un contexte de sécurité et échange des clés de session permettant d’échanger N messages dans un même contexte
OASIS WS-SecurityPolicyDescription des assertions spécifiques à la sécurité, utilisées dans WS-Security, WS-Trust, et WS-SecureConversation
WS-I Basic Security ProfileCore + Kerberos + SAML
GlassFish WSIT : WS-Security
WCF : SécuritéWCF : SécuritéSécurité des échanges de messagesSécurité d’accès aux ressourcesMise en œuvre grâce aux bindings et behaviorsParamétrage par code ou par configuration
Sécurité des échanges de messagesSécurité d’accès aux ressourcesMise en œuvre grâce aux bindings et behaviorsParamétrage par code ou par configuration
Binding
<endpointBehaviors> <behavior name=“prestoSignConfig”> <clientCredentials> <clientCertificate storeLocation=“LocalMachine” storeName=“My” x509FindType=“FindByThumbprint” findValue=“F31416E1D645367AC2DB89E31B8EF89A4E77CF21”/> </clientCredentials> </behavior> <endpointBehaviors>
Behavior
factory.Credentials.ServiceCertificate.SetDefaultCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, config.ServiceCertificateThumbprint);
Code Client
Code Client
Découverte dynamique du contratDécouverte dynamique du contrat
Pour que l’échange fonctionne, le client et le service doivent utiliser le même protocole
Le même fichier binding doit être utilisé sur le client et sur le serveur
WS-MetadataExchange (WS-MEX)Permet la récupération dynamique des méta-données (WSDL + WS-Policy)
Pour que l’échange fonctionne, le client et le service doivent utiliser le même protocole
Le même fichier binding doit être utilisé sur le client et sur le serveur
WS-MetadataExchange (WS-MEX)Permet la récupération dynamique des méta-données (WSDL + WS-Policy)
Client ServiceGetMetadata
WSDL
WCF : WS-MetadataExchangeWCF : WS-MetadataExchange
Obtention des éléments de binding via MetadataResolver
Les capacités de sécurité souhaitées sont obtenues par interrogation directe du Channel
Obtention des éléments de binding via MetadataResolver
Les capacités de sécurité souhaitées sont obtenues par interrogation directe du Channel
ISecurityCapabilities isc = endpoint.Binding.GetProperty<ISecurityCapabilities>(new BindingParameterCollection());
if (isc.SupportsServerAuthentication) {…}if (isc.SupportedRequestProtectionLevel != ProtectionLevel.None) {…}
Code Client
ChannelFactory<IPresto> factory ; Uri mexUri = new
Uri("http://192.168.0.2:9999/?wsdl"); ContractDescription contract = ContractDescription.GetContract(typeof(IPresto)); EndpointAddress mexEndpointAddress = new EndpointAddress(mexUri); ServiceEndpointCollection endpoints = MetadataResolver.Resolve(contract.ContractType, mexEndpointAddress); foreach (ServiceEndpoint endpoint in endpoints) { if (endpoint.Contract.Namespace.Equals( contract.Namespace) && endpoint.Contract.Name.Equals(contract.Name)){ factory = new ChannelFactory<IPresto> endpoint.Binding, endpoint.Address)} } IPresto prestoInterface = factory.CreateChannel();
Code Client
AgendaAgenda
IntroductionIntroduction
Web Services AvancésWeb Services Avancés
Démos WS-*Démos WS-*
GlassFish & WCFGlassFish & WCF
SynthèseSynthèse
En guise de conclusionEn guise de conclusion
WSIT et WCF deux frameworks offrant une interopérabilité
Basée sur des standardsSpécifications/protocoles WS-*Compatible avec les mécanismes de sécurité existants (Kerberos, X.509, HTTPS, etc.)
Validée, intégrée, et outillée
Un « cas d’utilisation » : PRESTO « PRotocole d’Echanges Standard et Ouvert » enveloppe de transport pour l’échange de documents électroniques entre SI d’administrations (DGME)
WSIT et WCF deux frameworks offrant une interopérabilité
Basée sur des standardsSpécifications/protocoles WS-*Compatible avec les mécanismes de sécurité existants (Kerberos, X.509, HTTPS, etc.)
Validée, intégrée, et outillée
Un « cas d’utilisation » : PRESTO « PRotocole d’Echanges Standard et Ouvert » enveloppe de transport pour l’échange de documents électroniques entre SI d’administrations (DGME)
Protocole PES HELIOS
Protocole métier ACTES
Protocole métier
spécifique
Où trouver de l’informationOù trouver de l’information
WSIT : http://java.sun.com/webservices/interopWCF : http://wcf.netfx3.comAlexis Moussine-Pouchkine : http://blogs.sun.com/alexismpSimon Guest : http://weblogs.asp.net/smguestBrian Keller : http://blogs.msdn.com/briankelTed Neward : http://www.neward.net/ted/weblogStéphane Goudeau : http://blogs.msdn.com/stephgou
WSIT : http://java.sun.com/webservices/interopWCF : http://wcf.netfx3.comAlexis Moussine-Pouchkine : http://blogs.sun.com/alexismpSimon Guest : http://weblogs.asp.net/smguestBrian Keller : http://blogs.msdn.com/briankelTed Neward : http://www.neward.net/ted/weblogStéphane Goudeau : http://blogs.msdn.com/stephgou
Questions ?Questions ?
© 2007 Microsoft Corporation. All rights reserved.© 2007 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. This presentation is for informational purposes only.
MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.