1 / 45

Interopérabilité des plateformes JavaEE et . NET Implémentation des spécifications avancées des services Web avec G

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. Agenda. Introduction. Web Services Avancés. GlassFish & WCF.

mardi
Download Presentation

Interopérabilité des plateformes JavaEE et . NET Implémentation des spécifications avancées des services Web avec G

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. Agenda Introduction Web Services Avancés GlassFish & WCF Démos WS-* Synthèse

  3. Agenda Introduction Web Services Avancés GlassFish & WCF Démos WS-* Synthèse

  4. Un besoin d’interopérabilité…

  5. Critères de choix Couplage faible Politiques d’utilisation Coût Existant Partage de contrat Standards Performances

  6. Agenda Introduction Web Services Avancés GlassFish & WCF Démos WS-* Synthèse

  7. Services Web • 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 l’entreprise 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

  8. Interoperabilitéhttp://www.WS-i.org • Effort de l’industrie • Accé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 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 d’outils de test • Basic Security Profile • Attachements Profile • Simple SOAP Binding Profile

  9. Business Processes Connected Systems Management SecurityWS-Security WS-Trust WS-Federation ReliabilityWS-Reliable Messaging TransactionsWS-Transactions WS-Coordination WS-AtomicTranscation Metadata WSDL, WS-Policy, WS-Discovery Messaging SOAP, WS-Addressing, WS-Eventing XML XML, XSD, XPath Transports HTTP WS-* : La cibleestatteinte…

  10. 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)

  11. FlightInfo FlightInfo ExtensionsSOAP • Utilisée pour des fonctionnalités plus avancées • Intercepte les appels destinés à un service Web • Prétraitement et post-traitement RETOUR SERIALIZE (natif XML) Interception (avant et après) ! RETOUR DESERIALIZE (XML  natif) Interception (avant et après) ! ALLER SERIALIZE (natif XML) Interception (avant et après) ! ALLER DESERIALIZE (XML  natif) Interception (avant et après) ! Client WS Fournisseur WS <FlightInfo> <flightNo/> <departTime/> <.../> </FlightInfo> “serialize” “deserialize” “deserialize” “serialize”

  12. Consommateur Fournisseur SOAP Extensions SOAP Extensions Routage Sécurité Fiabilité Transactions Cadre logistique Données structurées Implémentation des WS-* <?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>

  13. Agenda Introduction Web Services Avancés GlassFish & WCF Démos WS-* Synthèse

  14. Web Services dans Java EE 5 Logique Métier Logique Métier Classes Annotées Fortement Typées Couche Message API Dispatch/Provider • 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

  15. Simple Web Service JAX-WS package endpoint; import javax.jws.WebService; @WebService public class Bonjour { public String ditBonjour(String nom) { return "Bonjour " + nom; } }

  16. GlassFish et WSIT • 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)‏

  17. 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 http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&displaylang=en

  18. Be C B A WCF : Principes et outils Client Service • Visual Studio 2005 extensions for .NET Framework 3.0 WSDL A A B B C C Be A B C Point de terminaison Adresse Où ? « Binding » Comment ? Contrat Quoi ? « Behavior » Environnement d’exécution http://www.microsoft.com/downloads/details.aspx?FamilyId=F54F5537-CC86-4BF5-AE44-F5A1E805680D&displaylang=en

  19. Agenda Introduction Web Services Avancés GlassFish & WCF Démos WS-* Synthèse

  20. 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 d’utilisation • Caractéristiques de la communication : fiabilité, sécurité, encodage, transport,… • Implémentation du Service • Développement • Déploiement • Publication du WSDL

  21. Comment optimiser les WS …? • Comment transporter efficacement des objets binaires avec des services web ? • Par défaut : Encodage base64 • MTOM : Message Transmission OptimizationMechanism • 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 multipartrelated » MIME MULTIPART ENVELOPPE SOAP ENVELOPPE SOAP DONNES BINAIRES (encodé en base64) DONNES BINAIRES

  22. GlassFish WSIT : MTOM

  23. WCF : mise en place de MTOM Programmation • Contrat : Paramètre ou propriétés d’objets de type byte[ ] • Binding : Encodage de type MTOM Configuration <bindingname="prestoMtomBinding"> <mtomMessageEncoding messageVersion= "Soap12WSAddressingAugust2004" writeEncoding="utf-8"> <readerQuotasmaxArrayLength="5000000" /> </mtomMessageEncoding> <httpTransport maxReceivedMessageSize="5000000" … /> </binding> • Paramétrage par code ou par configuration • MtomMessageEncodingBindingElementmtomEncodingBindingElement = new • MtomMessageEncodingBindingElement(); • mtomEncodingBindingElement.WriteEncoding = System.Text.Encoding.UTF8; • mtomEncodingBindingElement.ReaderQuotas.MaxArrayLength = maxMessageSize; • encodingBindingElement = mtomEncodingBindingElement;

  24. WS-RM : Principe de fonctionnement • Différent du modèle de file d’attente (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

  25. GlassFish WSIT : WS-RM TerminateSequence explicite : ((Closeable)port).close();

  26. WCF : Reliable Messaging • « ReliableSessionBindingElement » • Premier élément de la collection de bindings • Paramétrage par code ou par configuration Transport par code • ReliableSessionBindingElement reliableSessionBindingElement = null; • reliableSessionBindingElement = new ReliableSessionBindingElement(); • … • reliableSessionBindingElement.FlowControlEnabled = true; • reliableSessionBindingElement.Ordered = true; • elements.Add(reliableSessionBindingElement); • <binding name="prestoReliableBinding"> • <reliableSessionacknowledgementInterval="00:00:00.2000000“ • … • flowControlEnabled=“true“ • ordered="false" /> RM par configuration

  27. Sécurité des services Web

  28. C C B B A A Modes de sécurité Service Client A Transport A A B B C C Client B Message

  29. Sécurité de niveau Transport • HTTPS, SSL over TCP • Dépendance du transport • Compatible avec les systèmes existants • S’applique au message dans son ensemble • Confidentialité, intégrité et/ou authentification • Point à point Service Client Chiffré/Signé

  30. 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é jusqu’au destinataire ultime du message • L’expéditeur ne doit faire confiance qu’au destinataire ultime • Sécurisation de façon sélective : partie(s) du message • Confidentialité, intégrité, non-répudiation et/ou authentification Nœud intermédiaire Client Service Chiffré/Signé Chiffré/Signé

  31. 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 d’un jeton de sécurité • Couple utilisateur / mot de passe, X.509, Kerberos et SAML • OASIS WS-Trust • Obtention et renouvellement d’un jeton de sécurité • OASIS WS-SecureConversation • Etablissement 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-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

  32. GlassFish WSIT : WS-Security

  33. WCF : Sécurité Code Client • Sécurité des échanges de messages • Sécurité d’accès aux ressources • Mise en œuvre grâce aux bindings et behaviors • Paramétrage par code ou par configuration Binding • factory.Credentials.ServiceCertificate. • SetDefaultCertificate( • StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, config.ServiceCertificateThumbprint); • <endpointBehaviors> • <behavior name=“prestoSignConfig”> • <clientCredentials> • <clientCertificate storeLocation=“LocalMachine” storeName=“My” • x509FindType=“FindByThumbprint” findValue=“F31416E1D645367AC2DB89E31B8EF89A4E77CF21”/> • </clientCredentials> • </behavior> • <endpointBehaviors> Behavior

  34. 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) Service Client GetMetadata WSDL

  35. 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 • ChannelFactory<IPresto> factory ; • Uri mexUri = new • Uri("http://192.168.0.2:9999/?wsdl"); • ContractDescriptioncontract = • ContractDescription.GetContract(typeof(IPresto)); • EndpointAddressmexEndpointAddress = new • EndpointAddress(mexUri); • ServiceEndpointCollectionendpoints = • MetadataResolver.Resolve(contract.ContractType, • mexEndpointAddress); • foreach (ServiceEndpointendpoint in endpoints) • { • if (endpoint.Contract.Namespace.Equals( • contract.Namespace) && • endpoint.Contract.Name.Equals(contract.Name)){ • factory = new ChannelFactory<IPresto> • endpoint.Binding, endpoint.Address)} • } • IPrestoprestoInterface = factory.CreateChannel(); Code Client • ISecurityCapabilitiesisc = endpoint.Binding.GetProperty<ISecurityCapabilities>( • new BindingParameterCollection()); • if (isc.SupportsServerAuthentication) {…} • if (isc.SupportedRequestProtectionLevel != ProtectionLevel.None) {…} Code Client

  36. Agenda Introduction Web Services Avancés GlassFish & WCF Démos WS-* Synthèse

  37. 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 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

  38. Où trouver de l’information • WSIT : http://java.sun.com/webservices/interop • WCF : http://wcf.netfx3.com • Alexis Moussine-Pouchkine : http://blogs.sun.com/alexismp • Simon Guest : http://weblogs.asp.net/smguest • Brian Keller : http://blogs.msdn.com/briankel • Ted Neward : http://www.neward.net/ted/weblog • Stéphane Goudeau : http://blogs.msdn.com/stephgou

  39. Questions ?

  40. © 2007 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.

More Related