Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE SUN Architecte Stéphane GOUDEAU Microsoft France Architecte Alexis MOUSSINE-POUCHKINE SUN Architecte Stéphane GOUDEAU Microsoft France Architecte
Agenda Introduction Web Services Avancés Démos WS-* GlassFish & WCF Synthèse
Agenda Introduction Web Services Avancés Démos WS-* GlassFish & WCF Synthèse
Un besoin dinteropérabilité…
Couplage faible Performances Politiquesdutilisation Coût Critères de choix Standards Existant Partage de contrat
Agenda Introduction Web Services Avancés Démos WS-* GlassFish & WCF Synthè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 langages Technologie pour lentreprise universellement adoptée ? Web services will become the dominant distributed computing architecture in the next 10 years and will eventually define the fabric of computing. – IDC Services Web
8 Interoperabilité Interoperabilité Effort de lindustrie Accélérer ladoption et garantir linteropérabilité des services Web Plus 160 leaders de lindustrie Partenariat avec les organismes de standardisation: OASIS, OMG, OMA, RosettaNet Profils regroupant un ensemble de standards avec leur recommandation dutilisation Basic Profile SOAP 1.1, WSDL 1.0, UDDI 2.0, XML 1.0 et XML Schema Mise à disposition par les éditeurs de modèles de mise en œuvre vis-à-vis de leur implémentation SOAP Mise à disposition doutils de test Basic Security Profile Attachements Profile Simple SOAP Binding Profile Effort de lindustrie Accélérer ladoption et garantir linteropérabilité des services Web Plus 160 leaders de lindustrie Partenariat avec les organismes de standardisation: OASIS, OMG, OMA, RosettaNet Profils regroupant un ensemble de standards avec leur recommandation dutilisation Basic Profile SOAP 1.1, WSDL 1.0, UDDI 2.0, XML 1.0 et XML Schema Mise à disposition par les éditeurs de modèles de mise en œuvre vis-à-vis de leur implémentation SOAP Mise à disposition doutils de test Basic Security Profile Attachements Profile Simple SOAP Binding Profile
9 WS-* : La cible est atteinte… Transports HTTP XML XML, XSD, XPath Messaging SOAP, WS-Addressing, WS-Eventing Security WS-Security WS-Trust WS-Federation Reliability WS-Reliable Messaging Transactions WS-Transactions WS-Coordination WS-AtomicTranscation Metadata WSDL, WS-Policy, WS-Discovery Connected Systems Management Business Processes
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 échanges OASIS Web Services Reliable Messaging (WS-ReliableMessaging) Sécurité du message OASIS 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 échanges OASIS Web Services Reliable Messaging (WS-ReliableMessaging) Sécurité du message OASIS Web Services Security: SOAP Message Security 1.0 (WS- Security)
ALLER DESERIALIZE (XML natif) Interception (avant et après) ! ALLER DESERIALIZE (XML natif) Interception (avant et après) ! RETOUR SERIALIZE (natif XML) Interception (avant et après) ! RETOUR SERIALIZE (natif XML) Interception (avant et après) ! ALLER SERIALIZE (natif XML) Interception (avant et après) ! ALLER SERIALIZE (natif XML) Interception (avant et après) ! RETOUR DESERIALIZE (XML natif) Interception (avant et après) ! RETOUR DESERIALIZE (XML natif) Interception (avant et après) ! Fournisseur WS Client WS <FlightInfo> </FlightInfo><FlightInfo> </FlightInfo> Extensions SOAP serializeserialize deserializedeserialize FlightInfo deserializedeserialize serializeserialize Utilis é e pour des fonctionnalit é s plus avanc é es Intercepte les appels destin é s à un service Web Pr é traitement et post-traitement Utilis é e pour des fonctionnalit é s plus avanc é es Intercepte les appels destin é s à un service Web Pr é traitement et post-traitement
12 Donnéesstructurées Cadre logistique T14:00:00-05:00 Pick up Mary at school at 2pm T14:00:00-05:00 Pick up Mary at school at 2pm Sécurité Fiabilité Transactions Routage Consommateur Fournisseur SOAP Extensions Implémentation des WS-*
Agenda Introduction Web Services Avancés Démos WS-* GlassFish & WCF Synthèse
Web Services dans Java EE 5 JAX-WS 2.x est l'évolution de JAX-RPC 1.x JAX-WS sous-ensemble de Java EE 5 EJB 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étier Classes Annotées Fortement Typées Couche Message API Dispatch/Provider
Simple Web Service JAX-WS package endpoint; import public 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 ( GlassFish et WSIT
Windows Communication Foundation (WCF) Composante du Microsoft.NET Framework 3.0 : Windows Vista, Windows XP SP2, Windows Server 2003 SP1 Framework unifié pour créer des Applications Orientées Service interopérables Unification des technologies middleware Architecture modulaire et composable Support 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 SP1 Framework unifié pour créer des Applications Orientées Service interopérables Unification des technologies middleware Architecture modulaire et composable Support natif des protocoles des services Web avancés WS-* Modèle de programmation orienté service CC340B-F857-4A14-83F C3BF043&displaylang=en
Visual Studio 2005 extensions for.NET Framework 3.0 Visual Studio 2005 extensions for.NET Framework 3.0 WCF : Principes et outils WSDL Point de terminaison ClientService B B « Binding » Comment ? « Binding » Comment ? C C Contrat Quoi ? Contrat Quoi ? A A Adresse Où ? Adresse Où ? « Behavior » Environnement dexécution « Behavior » Environnement dexécution Be B B A A C C A A C C B B A A C C B B F5A1E805680D&displaylang=en
Agenda Introduction Web Services Avancés Démos WS-* GlassFish & WCF Synthèse
Quelle démarche adopter ? Définition du contrat Contrat de service Description des opérations et sémantique des échanges (« oneway », « duplex », session, …) Contrat de données Définition du contenu des messages Contrat dutilisation Caractéristiques de la communication : fiabilité, sécurité, encodage, transport,… Implémentation du Service Développement Déploiement Publication du WSDL Définition du contrat Contrat de service Description des opérations et sémantique des échanges (« oneway », « duplex », session, …) Contrat de données Définition du contenu des messages Contrat dutilisation Caracté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 transporter efficacement des objets binaires avec des services web ? Par défaut : Encodage base64 MTOM : Message Transmission Optimization Mechanism Données présentes dans lInfoSet XML Transfert des données - sans ré-encodage - à lextérieur de lenveloppe 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 lInfoSet XML Transfert des données - sans ré-encodage - à lextérieur de lenveloppe SOAP, en utilisant un message de type « MIME multipart related » ENVELOPPE SOAP DONNES BINAIRES MIME MULTIPART DONNES BINAIRES (encodé en base64)
GlassFish WSIT : MTOM
<mtomMessageEncoding messageVersion= "Soap12WSAddressingAugust2004" writeEncoding="utf-8"> <httpTransport maxReceivedMessageSize=" " … /> WCF : mise en place de MTOM Contrat : Paramètre ou propriétés dobjets de type byte[ ] Binding : Encodage de type MTOM Contrat : Paramètre ou propriétés dobjets 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 Configuration Paramétrage par code ou par configuration
WS-RM : Principe de fonctionnement Différent du modèle de file dattente (pas de tiers explicite) Agent RM source et Agent RM destination La 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 dattente (pas de tiers explicite) Agent RM source et Agent RM destination La 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-RM TerminateSequence explicite : ((Closeable)port).close();
WCF : Reliable Messaging « ReliableSession BindingElement » Premier élément de la collection de bindings Paramétrage par code ou par configuration « ReliableSession BindingElement » Premier élément de la collection de bindings Paramétrage par code ou par configuration <reliableSession acknowledgementInterval="00:00: … 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
Sécurité des services Web
Modes de sécurité Client A Service B B A A C C A A C C B B Client B B B A A C C A A C C B B Transport Message
Sécurité de niveau Transport HTTPS, SSL over TCP Dépendance du transport Compatible avec les systèmes existants Sapplique au message dans son ensemble Confidentialité, intégrité et/ou authentification Point à point HTTPS, SSL over TCP Dépendance du transport Compatible avec les systèmes existants Sapplique au message dans son ensemble Confidentialité, intégrité et/ou authentification Point à point Client Service Chiffré/Signé
Sé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é jusquau destinataire ultime du message Lexpéditeur ne doit faire confiance quau destinataire ultime Sécurisation de façon sélective : partie(s) du message Confidentialité, 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é jusquau destinataire ultime du message Lexpéditeur ne doit faire confiance quau destinataire ultime Sécurisation de façon sélective : partie(s) du message Confidentialité, 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 WCF OASIS Web Services Security SOAP Message Security (WS-Security) 1.0 et 1.1 Intégrité, confidentialité, et inclusion dun jeton de sécurité Couple utilisateur / mot de passe, X.509, Kerberos et SAML OASIS WS-Trust Obtention et renouvellement dun jeton de sécurité OASIS WS-SecureConversation Etablissement dun contexte de sécurité et échange des clés de session permettant déchanger N messages dans un même contexte OASIS WS-SecurityPolicy Description des assertions spécifiques à la sécurité, utilisées dans WS-Security, WS-Trust, et WS-SecureConversation WS-I Basic Security Profile Core + Kerberos + SAML OASIS Web Services Security SOAP Message Security (WS-Security) 1.0 et 1.1 Intégrité, confidentialité, et inclusion dun jeton de sécurité Couple utilisateur / mot de passe, X.509, Kerberos et SAML OASIS WS-Trust Obtention et renouvellement dun jeton de sécurité OASIS WS-SecureConversation Etablissement dun contexte de sécurité et échange des clés de session permettant déchanger N messages dans un même contexte OASIS WS-SecurityPolicy Description des assertions spécifiques à la sécurité, utilisées dans WS-Security, WS-Trust, et WS-SecureConversation WS-I Basic Security Profile Core + Kerberos + SAML
GlassFish WSIT : WS-Security
WCF : Sécurité Sécurité des échanges de messages Sécurité daccès aux ressources Mise en œuvre grâce aux bindings et behaviors Paramétrage par code ou par configuration Sécurité des échanges de messages Sécurité daccès aux ressources Mise en œuvre grâce aux bindings et behaviors Paramétrage par code ou par configuration Binding <clientCertificate storeLocation=LocalMachine storeName=My x509FindType=FindByThumbprint findValue=F31416E1D645367AC2DB89E31B8EF89A4E77CF21/> Behavior factory.Credentials.ServiceCertificate. SetDefaultCertificate( StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, config.ServiceCertificateThumbprint); Code Client
Dé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 Service GetMetadata WSDL
WCF : 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 ( new BindingParameterCollection()); if (isc.SupportsServerAuthentication) {…} if (isc.SupportedRequestProtectionLevel != ProtectionLevel.None) {…} Code Client ChannelFactory factory ; Uri mexUri = new Uri(" 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 endpoint.Binding, endpoint.Address)} } IPresto prestoInterface = factory.CreateChannel(); Code Client
Agenda Introduction Web Services Avancés Démos WS-* GlassFish & WCF Synthèse
En guise de conclusion WSIT et WCF deux frameworks offrant une interopérabilité Basée sur des standards Spé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 dutilisation » : PRESTO « PRotocole dEchanges Standard et Ouvert » enveloppe de transport pour léchange de documents électroniques entre SI dadministrations (DGME) WSIT et WCF deux frameworks offrant une interopérabilité Basée sur des standards Spé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 dutilisation » : PRESTO « PRotocole dEchanges Standard et Ouvert » enveloppe de transport pour léchange de documents électroniques entre SI dadministrations (DGME) Protocole PES HELIOS Protocole métier ACTES Protocole métier spécifique
Où trouver de linformation WSIT : WCF : Alexis Moussine-Pouchkine : Simon Guest : Brian Keller : Ted Neward : Stéphane Goudeau : WSIT : WCF : Alexis Moussine-Pouchkine : Simon Guest : Brian Keller : Ted Neward : Stéphane Goudeau :
Questions ?
© 2007 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.