45
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

Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

Embed Size (px)

Citation preview

Page 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

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

Page 2: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

AgendaAgenda

IntroductionIntroduction

Web Services AvancésWeb Services Avancés

Démos WS-*Démos WS-*

GlassFish & WCFGlassFish & WCF

SynthèseSynthèse

Page 3: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

AgendaAgenda

IntroductionIntroduction

Web Services AvancésWeb Services Avancés

Démos WS-*Démos WS-*

GlassFish & WCFGlassFish & WCF

SynthèseSynthèse

Page 4: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

Un besoin d’interopérabilité…Un besoin d’interopérabilité…

Page 5: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 6: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

AgendaAgenda

IntroductionIntroduction

Web Services AvancésWeb Services Avancés

Démos WS-*Démos WS-*

GlassFish & WCFGlassFish & WCF

SynthèseSynthèse

Page 7: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 8: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 9: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 10: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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)

Page 11: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 12: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Tran

sact

ions

Routa

ge

ConsommateurConsommateur

FournisseurFournisseur

SOAP ExtensionsSOAP Extensions

SOAP ExtensionsSOAP Extensions

Implémentation des WS-*Implémentation des WS-*

Page 13: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

AgendaAgenda

IntroductionIntroduction

Web Services AvancésWeb Services Avancés

Démos WS-*Démos WS-*

GlassFish & WCFGlassFish & WCF

SynthèseSynthèse

Page 14: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 15: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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; }

}

Page 16: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 17: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 18: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 19: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

AgendaAgenda

IntroductionIntroduction

Web Services AvancésWeb Services Avancés

Démos WS-*Démos WS-*

GlassFish & WCFGlassFish & WCF

SynthèseSynthèse

Page 20: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 21: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE
Page 22: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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)

Page 23: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

GlassFish WSIT : MTOM

Page 24: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

<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

Page 25: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE
Page 26: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 27: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

GlassFish WSIT : WS-RMGlassFish WSIT : WS-RM

TerminateSequence explicite :((Closeable)port).close();

Page 28: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 29: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE
Page 30: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 31: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

Modes de sécuritéModes de sécurité

Client A Service

B AC A CB

Client B

B AC A CB

Transport

Message

Page 32: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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é

Page 33: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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é

Page 34: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 35: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

GlassFish WSIT : WS-Security

Page 36: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 37: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE
Page 38: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 39: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 40: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE
Page 41: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

AgendaAgenda

IntroductionIntroduction

Web Services AvancésWeb Services Avancés

Démos WS-*Démos WS-*

GlassFish & WCFGlassFish & WCF

SynthèseSynthèse

Page 42: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 43: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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

Page 44: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

Questions ?Questions ?

Page 45: Interopérabilité des plateformes JavaEE et. NET Implémentation des spécifications avancées des services Web avec GlassFish et WCF Alexis MOUSSINE-POUCHKINE

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