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

Post on 04-Apr-2015

116 views 8 download

Transcript of 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

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

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

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

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

WS-SECURITY

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

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

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.

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

PATTERNS DE SECURITE

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)

Patterns d’authentification

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

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

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é

Patterns de protection des messages

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

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

Authentification directe : Patterns et références

Authentification via broker : Patterns et références

WSE

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

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

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>

Mais aussi depuis un outil externe

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

SCENARIO 1

Approche programmatiqueApproche programmatique

Démonstration

Démonstration

Scenario 1

SCENARIO 2

Approche déclarativeApproche déclarative

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

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

Démonstration

Démonstration

Scenario 2

Windows Communication Foundation

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

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

Service

CBA

CBA

Client

Address, Binding, Contract

ABC

AddressOù?

ContractQuoi?

BindingComment?

EndpointEndpoint

CBA

Message

BvBv

Demo Service

Demo Client

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

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>

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>

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>

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>

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

Démonstration

Démonstration

WCF

Patterns

Patterns…

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

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

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

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

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

msfrance@microsoft.commsfrance@microsoft.com