sécurisation des services web avec wse 3.0 et wcf pierre couzy winwise stéphane goudeau microsoft
TRANSCRIPT
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
Resources
Portail des architectes MS France http://www.microsoft.com/france/msdn/architects/default.mspx
WSE http://msdn.microsoft.com/webservices/building/wse/default.aspx
WCF http://msdn.microsoft.com/webservices/indigo/default.aspx
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
[email protected]@microsoft.com