Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

54
Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft

Transcript of Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Page 1: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Sécurisation des services Web avec WSE 3.0 et WCF

Sécurisation des services Web avec WSE 3.0 et WCF

Pierre COUZYWinwise

Stéphane GOUDEAUMicrosoft

Page 2: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Introduction

Les Web Services sont un modèle à deux vitessesLes Web Services sont un modèle à deux vitessesUne galerie de normes quasi-exhaustiveUne galerie de normes quasi-exhaustive

Multiples consortiums, multiples normes, multiples utilisationsMultiples consortiums, multiples normes, multiples utilisations

Des implémentations très disparatesDes implémentations très disparatesLe plus petit dénominateur commun entre tous les éditeursLe plus petit dénominateur commun entre tous les éditeurs

L’utilisation en entreprise pêche souventL’utilisation en entreprise pêche souventPar le manque de connaissances des standards disponiblesPar le manque de connaissances des standards disponiblesPar un manque d’implémentations simples de ces standardsPar un manque d’implémentations simples de ces standards

Des scénarios catastrophe se montent peu à peuDes scénarios catastrophe se montent peu à peuImplémentation manuelle d’un standardImplémentation manuelle d’un standardRéinvention de la roue Réinvention de la roue Confiance quasi-absolue dans le comportement des Confiance quasi-absolue dans le comportement des appelantsappelantsAdaptation du service aux besoins d’un client spécifiqueAdaptation du service aux besoins d’un client spécifique

Page 3: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Notre agenda

Rappeler brièvement les concepts Rappeler brièvement les concepts associés à la sécurité des échanges de associés à la sécurité des échanges de messagesmessagesPrésenter les normes associéesPrésenter les normes associéesMontrer comment les implémenter dans Montrer comment les implémenter dans le monde Microsoftle monde Microsoft

Identifier les patterns de sécurité des Identifier les patterns de sécurité des messagesmessagesAppliquer et composer ces patternsAppliquer et composer ces patterns

Mettre WCF (ex-Indigo) en perspectiveMettre WCF (ex-Indigo) en perspective… … et vous donner les pointeurs et vous donner les pointeurs permettant d’aller plus loinpermettant d’aller plus loin

Page 4: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

La sécurité des échanges de message

AuthentificationAuthentificationL’émetteur est identifié sans ambiguïtéL’émetteur est identifié sans ambiguïté

IntégritéIntégritéLes messages n’ont pas été modifiésLes messages n’ont pas été modifiés

ConfidentialitéConfidentialitéLes messages n’ont pas été interceptésLes messages n’ont pas été interceptés

Non-répudiationNon-répudiationL’émetteur ne peut pas renier ses messagesL’émetteur ne peut pas renier ses messages

DisponibilitéDisponibilitéLes messages sont traitésLes messages sont traités

RoutageRoutageLe lien avec la sécurité est indirect, mais nous en Le lien avec la sécurité est indirect, mais nous en aurons besoin pour définir des périmètres de aurons besoin pour définir des périmètres de confianceconfiance

Page 5: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Evolve and Extend

Secure, Reliable, Transacted

Fundamentals

Carte des standards WS-*

20032000 2001 2002 2004 2005

WS-ReliableMessagingWS-ReliableMessaging

Relia

bility

Relia

bility

WS-I formedWS-I formed

Inte

rop

éra

bilité

Inte

rop

éra

bilité

WS-I BP 1.0WS-I BP 1.0

Security RoadmapSecurity Roadmap

Wh

itep

ap

ers

Wh

itep

ap

ers

Reliable Messaging RoadmapReliable Messaging RoadmapSRT Web Services WhitepaperSRT Web Services Whitepaper

WS-SecurityWS-Security

WS-TrustWS-Trust

Secu

rityS

ecu

rity

WS-Security AddendumWS-Security Profile for Tokens

WS-Security AddendumWS-Security Profile for Tokens

WS-FederationWS-Federation Active Requestor Profile

WS-FederationWS-Federation Active Requestor Profile

WS-Security SOAP Message SecurityWS-Security Username Token ProfileWS-Security X.509 Certificate Token Profile

WS-Security SOAP Message SecurityWS-Security Username Token ProfileWS-Security X.509 Certificate Token Profile

WS-Security Kerberos BindingWS-Security Kerberos Binding

WS-CoordinationWS-Transaction

WS-CoordinationWS-Transaction

Tra

nsa

ction

sTra

nsa

ction

s

WS-AtomicTransactionWS-AtomicTransaction

WS-BusinessActivityWS-BusinessActivity

SOAP 1.1SOAP 1.1

Messa

gin

gM

essa

gin

g

SOAP Messages with Attachments

SOAP Messages with Attachments

WS-ReferralWS-Routing

WS-ReferralWS-Routing

DIMEDIME WS-AttachmentsWS-Attachments

WS-AddressingWS-AddressingSOAP 1.2SOAP 1.2

MTOMMTOMWS-EventingWS-Eventing

WS-Policy 1.1WS-PolicyAttachments 1.1WS-PolicyAssertions 1.1

WS-Policy 1.1WS-PolicyAttachments 1.1WS-PolicyAssertions 1.1

WS-PolicyWS-PolicyAttachmentsWS-PolicyAssertionsWS-SecurityPolicy

WS-PolicyWS-PolicyAttachmentsWS-PolicyAssertionsWS-SecurityPolicy

Meta

data

Meta

data

UDDI 1.0UDDI 1.0

WSDLWSDLUDDI 2.0UDDI 2.0

WS-InspectionWS-InspectionUDDI 3.0UDDI 3.0

WS-DiscoveryWS-MetadataExchange

WS-DiscoveryWS-MetadataExchange

As of 2/2004

Page 6: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

WS-SECURITY

Page 7: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Les standards nous concernant

WS-SecurityWS-SecurityIntégrité, confidentialité, et inclusion d’un jeton de Intégrité, confidentialité, et inclusion d’un jeton de sécuritésécurité

WS-TrustWS-TrustEtablissement de jetons de sécurité Etablissement de jetons de sécurité

WS-FederationWS-FederationFédération de la gestion d’identitéFédération de la gestion d’identité

WS-SecureConversationWS-SecureConversationEtablir un contexte de sécurité et échanger des Etablir un contexte de sécurité et échanger des clés de session permettant d’échanger N clés de session permettant d’échanger N messages dans un même contextemessages dans un même contexte

WS-SecurityPolicyWS-SecurityPolicyDécrit les assertions spécifiques à la sécurité, Décrit les assertions spécifiques à la sécurité, utilisées dans WS-Security, WS-Trust, et WS-utilisées dans WS-Security, WS-Trust, et WS-SecureConversationSecureConversation

Page 8: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Web Services Architecture

Chacun de ces blocs a son propre espace sur MSDNChacun de ces blocs a son propre espace sur MSDN

http://msdn.microsoft.com/library/default.asp?url=/lihttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnglobspec/html/wsspecsover.aspbrary/en-us/dnglobspec/html/wsspecsover.asp

Page 9: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Comment aborder ces standards ?

Chaque scénario comporte des contraintes Chaque scénario comporte des contraintes spécifiques qui demandent une combinaison spécifiques qui demandent une combinaison intelligente de différents standardsintelligente de différents standardsPour appréhender cette complexité, on Pour appréhender cette complexité, on définit des patternsdéfinit des patterns

Patterns d’authentificationPatterns d’authentificationPatterns de confidentialitéPatterns de confidentialitéPatterns d’intégritéPatterns d’intégritéetc.etc.

Votre rôle est de connaître et composer ces Votre rôle est de connaître et composer ces patterns et d’identifier les forces et faiblesses patterns et d’identifier les forces et faiblesses de la solution retenuede la solution retenueLe rôle de Microsoft est de fournir des outils Le rôle de Microsoft est de fournir des outils simplifiant la mise en œuvre de votre simplifiant la mise en œuvre de votre solution.solution.

Page 10: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

SOAP SOAP Tool Tool KitKit

.NET .NET FrameworkFramework

Web Web ServicesServices

EnhancemenEnhancementsts

Windows Windows CommunicatiCommunicati

on on FoundationFoundation

Beta 1Beta 1

Beta 2Beta 2(? Go Live)(? Go Live)

V1.0V1.0LonghornLonghorn

V1.0V1.0

V2.0V2.0

V3.0V3.0

V1.0V1.0

V1.1V1.1

V2.0V2.0

SDKSDK

V1.0V1.0

V2.0V2.0

V3.0V3.0

Outils Microsoft pour les Services WebOutils Microsoft pour les Services Web

Page 11: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

PATTERNS DE SECURITE

Page 12: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Patterns d’authentification

L’identité peut circulerL’identité peut circulerDans le messageDans le message

Dans la couche de transport du messageDans la couche de transport du message

L’authentification peut être L’authentification peut être Directe (point à point)Directe (point à point)

Mutualisée (déléguée à un serveur tiers)Mutualisée (déléguée à un serveur tiers)

Facteurs importantsFacteurs importantsPrésence d’intermédiaires dans la communicationPrésence d’intermédiaires dans la communication

Confiance en ces intermédiairesConfiance en ces intermédiaires

Contraintes réseau spécifiques (firewalls)Contraintes réseau spécifiques (firewalls)

Page 13: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Patterns d’authentification

Page 14: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Jetons d’authentification

Secret KeySecret Key

PasswordPassword

Proof ofProof ofPossessionPossession

SignedSigned

……X.509X.509

KerberosKerberos

XrMLXrMLSAMLSAML

UnsignedUnsigned

……UsernameUsername

Valid ToValid To

Serial NumberSerial Number

VersionVersion

SubjectSubject

Public KeyPublic Key

Issuer’s Digital Issuer’s Digital SignatureSignature

Valid FromValid FromIssuerIssuer

Other FieldsOther Fields

Signature Signature AlgorithmAlgorithm

Déclaration d’un droit privilège ou attribut spécifiqueDéclaration d’un droit privilège ou attribut spécifique

Les messages véhiculent des jetons de sécurité qui Les messages véhiculent des jetons de sécurité qui l’expression de ces déclarationsl’expression de ces déclarations

Déclaration d’un droit privilège ou attribut spécifiqueDéclaration d’un droit privilège ou attribut spécifique

Les messages véhiculent des jetons de sécurité qui Les messages véhiculent des jetons de sécurité qui l’expression de ces déclarationsl’expression de ces déclarations

Page 15: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

WS-Security: « UsernameToken »

<UsernameToken Id="..."><UsernameToken Id="..."> <Username>...</Username><Username>...</Username> <Password Type="...">...</Password><Password Type="...">...</Password></UsernameToken> </UsernameToken>

Username (le mot de passe Username (le mot de passe est facultatif)est facultatif)

PasswordText : mot de passe completPasswordText : mot de passe completPasswordDigest: hash du mot de passePasswordDigest: hash du mot de passe

Page 16: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Patterns de protection du message

Le message peut êtreLe message peut êtreChiffré Chiffré

AuthentifiéAuthentifié

SignéSigné

La combinaison de ces facteurs assureLa combinaison de ces facteurs assureLa confidentialitéLa confidentialité

La non-répudiationLa non-répudiation

L’intégritéL’intégrité

Page 17: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Patterns de protection des messages

Page 18: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

XML Signature - intégrité

<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo><SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />c14n#" />

<SignatureMethod<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1" />Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1" />

<Reference URI="#Id-e7a3d692-3e96-452a-8a36-a5c346f69c95"><Reference URI="#Id-e7a3d692-3e96-452a-8a36-a5c346f69c95"> <Transforms><Transforms> <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-

c14n#" />c14n#" /> </Transforms></Transforms> <DigestMethod <DigestMethod

Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue>VKTFU9Zc3vFvmjvYJn6cV1y+e38=</DigestValue><DigestValue>VKTFU9Zc3vFvmjvYJn6cV1y+e38=</DigestValue>

</Reference> </Reference> </SignatureMethod></SignatureMethod> </CanonicalizationMethod></CanonicalizationMethod> </SignedInfo></SignedInfo></Signature></Signature>

Norme de canonisation Norme de canonisation retenueretenue

Algorithme retenu pour créer Algorithme retenu pour créer la signaturela signature

Identification des données Identification des données signéessignées

Données de signatureDonnées de signature

Page 19: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

XML-Encryption : confidentialité<S:Envelope<S:Envelope

xmlns:S="http://www.w3.org/2001/12/soap-envelope" xmlns:S="http://www.w3.org/2001/12/soap-envelope" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext" xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#">xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"> <S:Header><S:Header> <wsse:Security><wsse:Security> <xenc:ReferenceList><xenc:ReferenceList> <xenc:DataReference URI="#bodyID"/><xenc:DataReference URI="#bodyID"/> </xenc:ReferenceList></xenc:ReferenceList> </wsse:Security></wsse:Security> </S:Header></S:Header> <S:Body><S:Body> <xenc:EncryptedData Id="bodyID"> <xenc:EncryptedData Id="bodyID"> <ds:KeyInfo><ds:KeyInfo> <ds:KeyName>CN=Hiroshi Maruyama, C=JP</ds:KeyName><ds:KeyName>CN=Hiroshi Maruyama, C=JP</ds:KeyName> </ds:KeyInfo></ds:KeyInfo> <xenc:CipherData><xenc:CipherData> <xenc:CipherValue>...</xenc:CipherValue><xenc:CipherValue>...</xenc:CipherValue> </xenc:CipherData></xenc:CipherData> </xenc:EncryptedData></xenc:EncryptedData> </S:Body></S:Body></S:Envelope></S:Envelope>

Données chiffréesDonnées chiffrées

Page 20: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Authentification directe : Patterns et références

Page 21: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Authentification via broker : Patterns et références

Page 22: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

WSE

Page 23: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

ALLERALLERDESERIALIZE (XML DESERIALIZE (XML natif) natif)Interception (avant et après) !Interception (avant et après) !

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) !

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) !

ALLERALLERSERIALIZE (natifSERIALIZE (natif XML) XML)

Interception (avant et Interception (avant et après) !après) !

RETOURRETOURDESERIALIZE (XML DESERIALIZE (XML natif) natif)

Interception (avant et après) !Interception (avant et après) !

RETOURRETOURDESERIALIZE (XML DESERIALIZE (XML natif) natif)

Interception (avant et après) !Interception (avant et après) !

Fournisseur WSFournisseur WSClient WSClient WS<FlightInfo><FlightInfo> <flightNo/><flightNo/> <departTime/><departTime/> <.../><.../></FlightInfo></FlightInfo>

<FlightInfo><FlightInfo> <flightNo/><flightNo/> <departTime/><departTime/> <.../><.../></FlightInfo></FlightInfo>

“SOAP Extensions”

““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éesUtilisée pour des fonctionnalités plus avancées

Intercepte les appels destinés à un service WebIntercepte les appels destinés à un service Web

Prétraitement et post-traitementPrétraitement et post-traitement

Page 24: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Web Service Enhancements (WSE)

Extension à Visual Studio.NET et au framework .NET Extension à Visual Studio.NET et au framework .NET pour supporter les dernières spécifications WS-*: WS-pour supporter les dernières spécifications WS-*: WS-Security, WS-Addressing, WS-Policy, messaging Security, WS-Addressing, WS-Policy, messaging (MTOM)(MTOM)Un jeu de filtres hébergés par ASP.NET interceptant Un jeu de filtres hébergés par ASP.NET interceptant les messages SOAP entrants et sortants (injections les messages SOAP entrants et sortants (injections des en-têtes SOAP dans les messages, notion de des en-têtes SOAP dans les messages, notion de pipeline) pipeline) Soap Extension Soap Extension

Possibilité d’insérer ses propres filtres dans le pipelinePossibilité d’insérer ses propres filtres dans le pipeline

Page 25: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Configuration depuis Visual Studio

<configuration><configuration> <system.web><system.web> <webServices><webServices> <soapExtensionTypes><soapExtensionTypes> <add <add type="Microsoft.Web.Services3.WebStype="Microsoft.Web.Services3.WebServicesExtension, ervicesExtension, Microsoft.Web.Services3,Version=3.0.Microsoft.Web.Services3,Version=3.0.0.0, Culture=neutral, 0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"PublicKeyToken=31bf3856ad364e35" priority="1" priority="1" group="0"/>group="0"/> </soapExtensionTypes></soapExtensionTypes> </webServices></webServices> </system.web></system.web></configuration></configuration>

Page 26: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Mais aussi depuis un outil externe

Page 27: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Sécurité : la couverture de WSEAuthentificationAuthentification

Jetons de sécurité : Jetons de sécurité : Microsoft.Web.Services3.Security.SecurityTokenMicrosoft.Web.Services3.Security.SecurityTokenCouple utilisateur/mot de passe : UsernameTokenCouple utilisateur/mot de passe : UsernameTokenJetons binaires : BinarySecurityToken Jetons binaires : BinarySecurityToken

Certificat X509 : X509SecurityTokenCertificat X509 : X509SecurityTokenJeton Kerberos : KerbersoSecurityTokenJeton Kerberos : KerbersoSecurityToken

SAML : Microsoft.Web.Services3.Security.SAMLSAML : Microsoft.Web.Services3.Security.SAMLSignature des messagesSignature des messages

XML Signature : XML Signature : Microsoft.Web.Services3.Security.MessageSignatureMicrosoft.Web.Services3.Security.MessageSignature

Chiffrement des messagesChiffrement des messagesXML Encryption : XML Encryption : Microsoft.Web.Services3.Security.CryptographyMicrosoft.Web.Services3.Security.Cryptography

Gestion et définition de relation de confiance entre Gestion et définition de relation de confiance entre entitésentités

WS-Trust : Microsoft.Web.Services3.SecurityWS-Trust : Microsoft.Web.Services3.SecurityContexte de sécurité entre deux services pour des Contexte de sécurité entre deux services pour des échanges de plusieurs messages dans ce même échanges de plusieurs messages dans ce même contextecontexte

WS-SecureConversation : Microsoft.Web.Services3.SecurityWS-SecureConversation : Microsoft.Web.Services3.Security

Page 28: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

SCENARIO 1

Approche programmatiqueApproche programmatique

Page 29: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Démonstration

Démonstration

Scenario 1

Page 30: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

SCENARIO 2

Approche déclarativeApproche déclarative

Page 31: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

WS-SecurityPolicy« « Web Services Security Policy LanguageWeb Services Security Policy Language » »

IBM, Microsoft, RSA, IBM, Microsoft, RSA, VeriSignVeriSign, Décembre 2002, Décembre 2002

http://msdn.microsoft.com/ws/2002/12/ws-security-policyhttp://msdn.microsoft.com/ws/2002/12/ws-security-policy

Définit un ensemble d'assertions de politique lié aux Définit un ensemble d'assertions de politique lié aux concepts définis par les autres spécifications de concepts définis par les autres spécifications de sécuritésécurité

Permet aux participants de spécifierPermet aux participants de spécifierTypes de jeton, émetteurs, etc.Types de jeton, émetteurs, etc.

Exigences d’intégrité et de confidentialitéExigences d’intégrité et de confidentialité

Algorithmes supportéesAlgorithmes supportées

ExemplesExemplesPolitique des applications et servicesPolitique des applications et services

Quels sont les jetons/assertions nécessaires pour la requête ?Quels sont les jetons/assertions nécessaires pour la requête ?Où les clients peuvent-ils obtenir ces jetons/assertions ?Où les clients peuvent-ils obtenir ces jetons/assertions ?

Politique de services de jetons de sécuritéPolitique de services de jetons de sécuritéQuels sont les jetons/assertions acceptés ?Quels sont les jetons/assertions acceptés ?Quels sont les jetons/assertions fournis ?Quels sont les jetons/assertions fournis ?

Politique

Page 32: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Capitaliser sur des scénarios de sécurité “clé en main”

Meilleures pratiques : 5 Meilleures pratiques : 5 scénariosscénarios

1 scenario = 1 assertion 1 scenario = 1 assertion (« Policy »)(« Policy »)

UsernameOverCertificateUsernameOverCertificate

AnnonymousOverCertificateAnnonymousOverCertificate

UsernameOverTransportUsernameOverTransport

KerberosKerberos

MutualX509MutualX509

Page 33: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Démonstration

Démonstration

Scenario 2

Page 34: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Windows Communication Foundation

Page 35: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Unification des technologies middlewareUnification des technologies middlewareArchitecture modulaire et composableArchitecture modulaire et composable

“Framework unifié pour créer des applications orientées services sur la plate-forme Windows”

Interopérabilité avec les autres Interopérabilité avec les autres plateformesplateformesInteropérabilité avec les technologies Interopérabilité avec les technologies courantescourantes

Model de programmation orienté serviceModel de programmation orienté serviceSupport natif des protocoles WS-*Support natif des protocoles WS-*

Windows Communication Foundation

Page 36: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Architecture « composable »

Modèle de service

Influence et étend le modèle de programmation fondé sur les messages entrants

Messaging

Echange les messages et permet l’extension des canaux

qui assurent le transfert des messages

Code duCode duServiceService

Transaction Behavior

CLR Type Integration

Instancing Behavior

SecurityChannel

TCP Transport

SecurityChannel

TCP Transport

Transaction Behavior

CLR Type Integration

Page 37: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Service

CBA

CBA

Client

Address, Binding, Contract

ABC

AddressOù?

ContractQuoi?

BindingComment?

EndpointEndpoint

CBA

Message

BvBv

Page 38: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Demo Service

Page 39: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Demo Client

Page 40: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Mode de sécurité par défaut

Binding Mode de sécurité par défaut

basicHttpBinding None

wsHttpBinding Message

wsDualHttpBinding Message

wsFederationBinding Message

netTcpBinding Transport

netNamedPipeBinding Transport

netMsmqBinding Message

netPeerTcpBinding Transport

msmqIntegrationBinding Transport

Page 41: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Paramétrage du mode de sécurité

Par code :Par code :BasicHttpBinding b = new BasicHttpBinding(); BasicHttpBinding b = new BasicHttpBinding();

b.Security.Mode = BasicHttpSecurityMode.Transport; b.Security.Mode = BasicHttpSecurityMode.Transport;

b.Security.Transport.ClientCredentialType = b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; HttpClientCredentialType.Basic;

host.AddServiceEndpoint(typeof(IEchoService), b, "svc"); host.AddServiceEndpoint(typeof(IEchoService), b, "svc");

Par configuration :Par configuration :<basicHttpBinding><basicHttpBinding>

<binding name="TransportSecurity"><binding name="TransportSecurity">

<security mode="Transport" /><security mode="Transport" />

</binding></binding>

</basicHttpBinding></basicHttpBinding>

Page 42: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Niveau de protection des messages

3 niveaux de protection :3 niveaux de protection :NoneNoneSignSignEncryptAndSignEncryptAndSign

Configuration du niveau de protection :Configuration du niveau de protection :<bindings> <bindings> <netTcpBinding> <netTcpBinding> <binding name="protectionSecurity" <binding name="protectionSecurity" <security mode="Transport" ><security mode="Transport" > <transport clientCredentialType="Windows" <transport clientCredentialType="Windows"

protectionLevel="EncryptAndSign"protectionLevel="EncryptAndSign"/>/> </security> </security> </binding> </binding> </netTcpBinding> </netTcpBinding> </bindings> </bindings>

Page 43: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Modes d’authentificationWCF supporte plusieurs modes d’authentification :WCF supporte plusieurs modes d’authentification :

AnonymeAnonymeWindows : Scénarios IntranetWindows : Scénarios IntranetJetons Utilisateur (avec/sans fournisseur ASP.NET) : Scénarios B2C d’hierJetons Utilisateur (avec/sans fournisseur ASP.NET) : Scénarios B2C d’hierInfoCard : Scénarios B2C de demainInfoCard : Scénarios B2C de demainCertificats : Scénarios B2BCertificats : Scénarios B2BJetons délivrés par un Security Token Service : Jetons délivrés par un Security Token Service : Scénarios B2B de demainScénarios B2B de demain

Encapsulation dans la couche transport Encapsulation dans la couche transport ou au sein de messagesou au sein de messagesConfiguration du mode d’authentification :Configuration du mode d’authentification :

<bindings><bindings><wsHttpBinding> <wsHttpBinding> <binding name = "authentificationModeSecurity" <binding name = "authentificationModeSecurity" securityMode = "Message"> securityMode = "Message"> <wsSecurity authenticationMode="certificate"/> <wsSecurity authenticationMode="certificate"/> </binding></binding></wsHttpBinding> </wsHttpBinding> </bindings> </bindings>

Page 44: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Spécification des paramètres d’identité

Spécification du mode d’authentification par codeSpécification du mode d’authentification par code« SetUserNamePassword »« SetUserNamePassword »

Spécification du mode d’authentification par Spécification du mode d’authentification par configuration :configuration :

Client :Client :<behaviors> <behaviors> <behavior name="credentialConfig"><behavior name="credentialConfig"><clientCredentials><clientCredentials><clientCertificate storeLocation="CurrentUser" storeName="My" <clientCertificate storeLocation="CurrentUser" storeName="My"

x509FindType="FindBySubjectName" findValue="client.com"/>x509FindType="FindBySubjectName" findValue="client.com"/></clientCredentials></clientCredentials></behavior></behavior></behaviors></behaviors>

Service :Service :<behavior name="credentialConfig" <behavior name="credentialConfig"

returnUnknownExceptionsAsFaults="true" >returnUnknownExceptionsAsFaults="true" ><serviceSecurityCredentials <serviceSecurityCredentials

x509AuthenticationMapToWindows="false">x509AuthenticationMapToWindows="false"><serviceX509Certificate findValue="localhost" <serviceX509Certificate findValue="localhost"

storeLocation="LocalMachine" storeName="My" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" />x509FindType="FindBySubjectName" />

</serviceSecurityCredentials></serviceSecurityCredentials></behavior></behavior>

Page 45: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Gestion des autorisations

Attributs dans le code pour identifier les Attributs dans le code pour identifier les RôlesRôles

[PrincipalPermission(SecurityAction.Demand, Role = Administrator")]string IResourceAccessContract.AccessDiamond()

Assignation d’utilisateurs à des rôles avec l’outil Assignation d’utilisateurs à des rôles avec l’outil d’administration (Authorization Manager)d’administration (Authorization Manager)

Fournisseur de rôles Fournisseur de rôles Spécifié dans le fichier de Configuration Spécifié dans le fichier de Configuration

Relier les rôles dans le code aux rôles de l’outil Relier les rôles dans le code aux rôles de l’outil d’administrationd’administration

Mécanisme extensibleMécanisme extensible

Page 46: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Démonstration

Démonstration

WCF

Page 47: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Patterns

Page 48: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Patterns…

Page 49: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Conclusion

WS-Security permet aux services Web de bénéficier WS-Security permet aux services Web de bénéficier des technologies de sécurité existantesdes technologies de sécurité existantes

AuthentificationAuthentificationJetons de sécuritéJetons de sécuritéSignature des messages : XML SignatureSignature des messages : XML SignatureChiffrement des messages : XML EncryptionChiffrement des messages : XML Encryption

Microsoft fournit aujourd’hui deux implémentations Microsoft fournit aujourd’hui deux implémentations de WS-Security : WSE 3.0 et Windows de WS-Security : WSE 3.0 et Windows Communication Foundation (Beta 2)Communication Foundation (Beta 2)

WSE 3.0 est interopérable avec WCFWSE 3.0 est interopérable avec WCFLes assertions de scénarios de sécurité « clé en main » WSE Les assertions de scénarios de sécurité « clé en main » WSE sont équivalentes aux éléments « binding » de sécurité de sont équivalentes aux éléments « binding » de sécurité de WCFWCFCes deux briques technologiques permettent de Ces deux briques technologiques permettent de programmer ou configurer :programmer ou configurer :

Authentification, autorisations, confidentialité, et traçabilitéAuthentification, autorisations, confidentialité, et traçabilitéEn proposant des scénarios de sécurisation par défautEn proposant des scénarios de sécurisation par défautEn capitalisant sur l’infrastructure Windows pour les scénarios En capitalisant sur l’infrastructure Windows pour les scénarios intranetintranet

Page 50: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

20072007“Longhorn” Server

20062006WinFX Beta 2 (Janvier 2006)Biztalk 2006 (mars 2006)Vista (fin 2006)WinFX (fin 2006)Office “12” septembre 200620052005

Visual Studio 2005 (depuis le 8 Novembre)SQL Server 2005 (depuis le 8 Novembre)Windows Server 2003 R2 (ADFS)Biztalk 2006 Beta 2Office “12” Beta 1

Roadmap Plateforme

Page 52: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Les dates

Visual Studio Team System vu par le développeur Visual Studio Team System vu par le développeur

Architecture orientée service avec Windows Architecture orientée service avec Windows Communication Foundation Communication Foundation

Intégrer un workflow dans vos applications avec Intégrer un workflow dans vos applications avec Windows Workflow Foundation Windows Workflow Foundation

Office 12 vu par le développeur Office 12 vu par le développeur

Vers le Web 2 Vers le Web 2

Vers une nouvelle expérience utilisateurVers une nouvelle expérience utilisateur

Page 53: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

7 Mars  : Nantes7 Mars  : Nantes

9 Mars  : Lille9 Mars  : Lille

14 Mars : Strasbourg14 Mars : Strasbourg

23 Mars : Paris23 Mars : Paris

28 Mars : Marseille28 Mars : Marseille

30 Mars : Toulouse30 Mars : Toulouse

4 Avril : Lyon4 Avril : Lyon

Page 54: Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft.

Microsoft FranceMicrosoft France18, avenue du Québec18, avenue du Québec

91 957 Courtaboeuf Cedex91 957 Courtaboeuf Cedex

www.microsoft.com/france

0 825 827 8290 825 827 829

[email protected]@microsoft.com