Sécurité des Services Web Avec Windows Communication Foundation (WCF) Philippe BERAUD Consultant Architecte Microsoft France philber@microsoft.com Stéphane GOUDEAU Architecte en Système d’information Microsoft France stephgou@microsoft.com
Sommaire Présenter rapidement WCF inclus dans Windows Vista Rappeler brièvement les concepts associés à la sécurité des échanges de messages et de leur traitement Montrer comment les implémenter avec WCF Identifier les patterns de sécurité des messages Présenter les normes associées Appliquer et composer ces patterns avec une mise en perspective de WCF … et vous donner les pointeurs permettant d’aller plus loin
Quelques concepts
Sécurité des services Web Sécurité des échanges de messages Intégrité Les messages n’ont pas été altérés Confidentialité Le contenu des messages n’a pas été intercepté Non-répudiation L’émetteur ne peut pas renier ses messages Fiabilité Les messages sont reçus et traités Sécurité d’accès aux ressources Authentification L’émetteur est identifié et validé sans ambiguïté Autorisations Les informations d’identité validées sont utilisées pour le contrôle d’accès Fédération
Environnement d’exécution WCF en un « mot » Composante du Microsoft .NET Framework 3.0 Framework unifié pour créer des Applications Orientées Service interopérables Client Service WSDL A C B Point de terminaison B A C Be A Adresse Où ? B « Binding » Comment ? C Contrat Quoi ? « Behavior » Environnement d’exécution Be
Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM WCF et la sécurité WCF assure La sécurité des échanges de messages La sécurité d’accès aux ressources Cf. « Common Security Scenarios » http://msdn2.microsoft.com/en-gb/library/ms730301.aspx Les bindings contrôlent Le type de transport, l’encodage L’authentification et les autorisations L’intégrité et la confidentialité L’identité fédérée Les behaviors contrôlent L’impersonation Les autorisations Le niveau de protection © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Sécurité des échanges de messages
Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Modes de sécurité Service Client A Transport B A C A C B Client B B A C A C B Message © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Bindings WCF et mode de sécurité Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Bindings WCF et mode de sécurité Un binding spécifie chaque élément de la pile de communication Transaction, Fiabilité, Sécurité, Encodage, Transport Mode de sécurité pour les bindings Configure l’authentification et des mécanismes de protection du canal Définit comment et quelles informations seront utilisées pour établir l’identité de l’entité 2 niveaux de définition/programmation Modèle « clé en main » = binding standard Modèle avancé de binding personnalisé Code Service Contrat Binding … Fiabilité Sécurité Encodage Transport Adresse © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Bindings standard Binding Transport Message Par défaut BasicHttpBinding N/A WSHttpBinding WSDualHttpBinding WSFederationHttpBinding NetTcpBinding NetNamedPipeBinding NetMsmqBinding NetPeerTcpBinding MsmqIntegrationBinding © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Paramétrage du mode de sécurité Par code Par configuration * Utilisation du Microsoft Service Configuration Editor BasicHttpBinding binding = new BasicHttpBinding(); binding.Security.Mode = BasicHttpSecurityMode.Transport; binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; host.AddServiceEndpoint(typeof(Microsoft.TechDays07.IFoo), binding, “https://localhost:6060/service”); Code Service <bindings> <wsHttpBinding> <binding name=“transportSecurityBinding”> <security mode=“Transport”/> </binding> </wsHttpBinding> </bindings> Binding <services> <service name=“Microsoft.TechDays07.Service”> <endpoint address=“https://localhost:6060/service” binding=“wsHttpBinding" bindingConfiguration=“transportSecurityBinding” contract=“Microsoft.TechDays07.IFoo”/> </service> </services> Point de terminaison
Utilisation des Web Services Factory Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Utilisation des Web Services Factory Web Services Factory http://msdn2.microsoft.com/en-us/library/aa480534.aspx Web Service Factory Guidance Package http://www.microsoft.com/downloads/details.aspx?familyid=db996113-6e92-4894-9b7e-0debb614d72f&displaylang=en Tools/Guidance Package Manager : Activation du Web Service Factory – Security (WCF) Nécessite Les Guidance Automation Extensions (GAX) http://www.microsoft.com/downloads/details.aspx?familyid=C0A394C0-5EEB-47C4-9F7B-71E51866A7ED&displaylang=en Le Guidance Automation Toolkit http://www.microsoft.com/downloads/details.aspx?familyid=E3D101DB-6EE1-4EC5-884E-97B27E49EAAE&displaylang=en © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Bindings personnalisés pour les scénarios non « clés en main » Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Bindings personnalisés pour les scénarios non « clés en main » Spécification manuelle de chaque élément de la pile de communication Transaction, Fiabilité, Sécurité, Encodage, Transport Cf. « Creating User-Defined Bindings » http://msdn2.microsoft.com/en-us/library/ms733893.aspx Permet de configurer Mode d’authentification Jetons de sécurité supportés Suite d’algorithmes de chiffrement ou de génération de clés L’activation du mécanisme de dérivation des clés Version pour la sécurité de niveau Message Ordre des éléments de l’entête de sécurité Vérification de l’identité Intervalle de renouvellement des clés © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Sécurité de niveau Transport Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Sécurité de niveau Transport HTTPS, SSL over TCP Dépendance du transport Compatible avec les systèmes existants S’applique au message dans son ensemble Confidentialité, intégrité et/ou authentification Point à point Service Client Chiffré/Signé © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Configuration de la sécurité de niveau Transport Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Configuration de la sécurité de niveau Transport Configuration Service <bindings> <wsHttpBinding> <binding name=“transportSecurityBinding”> <security mode=“Transport”> <transport clientCredentialType=“None”/> </security> </binding> </wsHttpBinding> </bindings> Binding <services> <service name=“Microsoft.TechDays07.Service”> <endpoint address=“https://localhost:6060/service” binding=“wsHttpBinding" bindingConfiguration=“transportSecurityBinding” contract=“Microsoft.TechDays07.IFoo”/> </service> </services> Point de terminaison © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Sécurité de niveau Message Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Sécurité de niveau Message Sécurité des services Web avancés (WS-*) Appliquée au niveau des messages SOAP Indépendante du transport et extensible Sécurisé jusqu’au destinataire ultime du message De bout en bout L’expéditeur ne doit faire confiance qu’au destinataire ultime Sécurisation de façon sélective : partie(s) du message Confidentialité, intégrité, non-répudiation et/ou authentification Patterns de protection des messages Le message peut être Chiffré, signé et/ou authentifié La combinaison de ces facteurs assure La confidentialité, l’intégrité et la non-répudiation Nœud intermédiaire Client Service Chiffré/Signé Chiffré/Signé © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Standards sécurité WS-* dans WCF OASIS Web Services Security SOAP Message Security (WS-Security) 1.0 et 1.1 Intégrité, confidentialité, et inclusion d’un jeton de sécurité Couple utilisateur / mot de passe, X.509, Kerberos et SAML OASIS WS-Trust Obtention et renouvellement d’un jeton de sécurité OASIS WS-SecureConversation Etablissement d’un contexte de sécurité et échange des clés de session permettant d’échanger N messages dans un même contexte OASIS WS-SecurityPolicy Description des assertions spécifiques à la sécurité, utilisées dans WS-Security, WS-Trust, et WS-SecureConversation WS-I Basic Security Profile Core + Kerberos + SAML
WS-Security, la fondation 4/10/2017 9:51 PM WS-Security, la fondation Définit un « framework » pour appliquer de la sécurité aux messages SOAP Intégrité (et non répudiation) W3C XML Signature Syntax and Processing (XMLDSIG) Schéma défini : http://www.w3.org/TR/xmldsig-core Signatures multiples, parties spécifiques Confidentialité W3C XML Encryption Syntax and Processing (XMLENC) Schéma défini : http://www.w3.org/TR/xmlenc-core Chiffrement multiples, parties spécifiques Définit le concept de jetons de sécurité Comment un jeton est transmis dans le message et comment il y est référencé Support des jetons binaires et XML © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Signatures numériques pour l’intégrité 4/10/2017 9:51 PM Signatures numériques pour l’intégrité Signature du message (ou de partie(s) spécifique(s)) Vérification que le message n’a pas été modifié pendant l’échange : non-répudiation Signatures multiples autorisées dans un message Créer une signature numérique (émetteur) Message à envoyer Condensé Signature numérique Jrf843kjfgf*£$&Hdif*7oUsd*&@:<CHDFHSD(** Py75c%bn&*)9|fDe^bDFaq#xzjFr@g5=&nmdFg$5knvMd’rkvegMs” Fonction de hashage Chiffrement asymétrique Clé privée de l’émetteur © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
XMLDSIG Signature sur l’élément ds:SignedInfo Jeton de sécurité 4/10/2017 9:51 PM XMLDSIG <s:Envelope xmlns:s=“...” xmlns:wsu=“...” xmlns:ws=“...” xmlns:ds=“...” > <s:Header> <ws:Security s:mustUnderstand=“true” > <ws:BinarySecurityToken wsu:Id=“Me” ValueType=“http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token- profile-1.0#X509v3” EncodingType=“http://dosc.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message- security-1.0#Base64Binary” > MeIIZFgea4FGiu5cvWEklO8pl... </ws:BinarySecurityToken> … <ds:Signature> <ds:SignedInfo> <ds:CanonicalizationMethod Algorithm=“http://www.w3.org/2001/10/xml-exc-c14n#” /> <ds:SignatureMethod Algorithm=“http://www.w3.org/2000/09/xmldsig#rsa-sha1” /> <ds:Reference URI=“#Body” > <ds:DigestMethod Algorithm=“http://www.w3.org/2000/09/xmldsig#sha1” /> <ds:DigestValue>uJhGtef54ed91iKLoA...</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue> FR8yaKmNDePQ7E3Hj... </ds:SignatureValue> Jeton de sécurité Référence de la donnée à protéger Condensé de la donnée à protéger Signature sur l’élément ds:SignedInfo © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
4/10/2017 9:51 PM XMLDSIG … <ds:KeyInfo> <ws:SecurityTokenReference> <ws:Reference URI=“#Me” ValueType=“http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss- x509-token-profile-1.0#X509v3” /> </ws:SecurityTokenReference> </ds:KeyInfo> </ds:Signature> </ws:Security> </s:Header> <s:Body wsu:Id=“Body” > </s:Body> </s:Envelope> Référence au jeton qui peut être utilisé pour vérifier la signature Données signées © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Signatures numériques pour l’intégrité 4/10/2017 9:51 PM Signatures numériques pour l’intégrité Vérifier une signature numérique (destinataire) Signature numérique Condensé Déchiffrement asymétrique Py75c%bn&*)9|fDe^bDFaq#xzjFr@g5=&nmdFg$5knvMd’rkvegMs” Jrf843kjfgf*£$&Hdif*7oUsd*&@:<CHDFHSD(** Clé publique de l’émetteur envoyée avec le message ? == ? Py75c%bn&*)9|fDe^bDFaq#xzjFr@g5=&nmdFg$5knvMd’rkvegMs” Même fonction de hachage Message d’origine © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Chiffrement XML pour la confidentialité 4/10/2017 9:51 PM Chiffrement XML pour la confidentialité Des parties spécifiques du message peuvent être chiffrées pour assurer la confidentialité Le texte en clair est remplacé par du texte chiffré Chiffrer un message (émetteur) Clé publique du destinataire Clé symétrique générée Clé chiffrée AyD5c%bné”*)9|fDe^bDFaq#xzjFKr@67=&nmdWzm5knvMd’rkvegMs” Chiffrement asymétrique Chiffrement symétrique Py75c%bn&*)9|fDe^bDFaq#xzjFr@g5=&nmdFg$5knvMd’rkveq#xzjFrgMs” Message d’origine © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Chiffrement XML pour la confidentialité 4/10/2017 9:51 PM Chiffrement XML pour la confidentialité Déchiffre un message (destinataire) Clé privée du destinataire Clé chiffrée AyD5c%bné”*)9|fDe^bDFaq#xzjFKr@67=&nmdWzm5knvMd’rkvegMs” déchiffrement asymétrique Py75c%bn&*)9|fDe^bDFaq#xzjFr@g5=&nmdFg$5knvMd’rkveq#xzjFrgMs” déchiffrement symétrique © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
XMLENC Données chiffrées 4/10/2017 9:51 PM <s:Envelope xmlns:s=“...” xmlns:wsu=“...” xmlns:ws=“...” xmlns:ds=“...” xmlns:xenc=“...” > <s:Header> <ws:Security> <xenc:ReferenceList> <xenc:DataReference URI=“#Body”/> </xenc:ReferenceList> </ws:Security> </s:Header> <s:Body> <xenc:EncryptedData wsu:Id=“Body” > <ds:KeyInfo> <ds:KeyName>CN=Alice</ds:KeyName> </ds:KeyInfo> <xenc:CipherData> <xenc:CipherValue>...</xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedData> </s:Body> </s:Envelope> Données chiffrées © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Configuration de la sécurité de niveau Message 4/10/2017 9:51 PM Configuration de la sécurité de niveau Message Configuration Service <bindings> <wsHttpBinding> <binding name=“messageSecurityBinding”> <security mode=“Message”/> <message clientCredentialType=“None”/> </security> </binding> </wsHttpBinding> </bindings> <security mode=“Message”> <message clientCredentialType=“Windows”> </security> Binding <security mode=“Message”> <message clientCredentialType=“Certificate”> </security> <services> <service name=“Microsoft.TechDays07.Service”> <endpoint address=“http://localhost:6060/service” binding=“wsHttpBinding" bindingConfiguration=“messageSecurityBinding” contract=“Microsoft.TechDays07.IFoo”/> </service> </services> Point de terminaison [ServiceContract(ProtectionLevel=ProtectionLevel.EncryptAndSign)] public interface IFoo() Contrat © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Configuration de la sécurité de niveau Message 4/10/2017 9:51 PM Configuration de la sécurité de niveau Message Niveau de protection sélectif [MessageContract] public struct SomeMethod2Request { [MessageHeader(Name =“Foo2Id”, Namespace=“http://Microsoft.TechDays07”, ProtectionLevel= System.Net.Security.ProtectionLevel.Sign)] public string foo2Id; [MessageBody( Namespace=“http://Microsoft.TechDays07”)] public Foo2Item item; } Contrat © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Sécurité mixte Le transport est responsable de la confidentialité, de l’intégrité et optionnellement de l’authentification serveur Message sécurisé de point à point Le message n’est pas sécurisé une fois extrait Aucune sélection du niveau de protection Dépendance du transport La sécurité de niveau message est utilisée pour établir l’identité client Crédentiels de bout-en-bout © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Configuration de la sécurité mixte 4/10/2017 9:51 PM Configuration de la sécurité mixte Configuration Service Code Client <bindings> <wsHttpBinding> <binding name=“mixedSecurityBinding”> <security mode=“TransportWithMessageCredential”> <message clientCredentialType=“UserName”/> </security> </binding> </wsHttpBinding> </bindings> Binding <services> <service name=“Microsoft.TechDays07.Service”> <endpoint address=“https://localhost:6060/service” binding=“wsHttpBinding” bindingConfiguration=“mixedSecurityBinding” contract=“Microsoft.TechDays07.IFoo”/> </service> </services> Point de terminaison proxy.ClientCredentials.UserName.UserName = username; proxy.ClientCredentials.UserName.Password = password; © 2003-2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Sécurité d’accès aux ressources Authentification
Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Authentification WCF supporte plusieurs modes d’authentification Anonyme, couple utilisateur/mot de passe, Windows, certificat X.509, InfoCard/IssuedToken, personnalisé Les crédentiels Windows et certificat sont automatiquement validés Au niveau Transport ou Message <bindings> <wsHttpBinding> <binding name=“messageSecurityBinding”> <security mode=“Message”> <message clientCredentialType=“Certificate”> </security> </binding> </wsHttpBinding> </bindings> Binding © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Authentification Spécification des paramètres d’identité Client Service <behaviors> <endpointBehaviors> <behavior name=“credentialConfig”> <clientCredentials> <clientCertificate storeLocation=“CurrentUser” storeName=“My” x509FindType=“FindBySubjectName” findValue=“CN=Alice”/> </clientCredentials> </behavior> </behaviors> Behavior <behaviors> <serviceBehaviors> <behavior name=“credentialConfig” returnUnknownExceptionsAsFaults=“true” > <serviceCredentials x509AuthenticationMapToWindows=“false” > <serviceCertificate storeLocation=“LocalMachine” storeName=“My” x509FindType=“FindBySubjectName” findValue=“localhost" /> </serviceCredentials> </behavior> </behaviors> Behavior
Configuration de la sécurité de niveau Transport Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Configuration de la sécurité de niveau Transport Authentification Client SSL Code Client -ou- Configuration Client proxy.ClientCredentials.ClientCertificate.SetCertificate( “CN=Alice”, StoreLocation.CurrentUser, StoreName.My); <client> <endpoint address=“https://localhost:6060/service” binding=“wsHttpBinding" bindingConfiguration=“transportSecurityBinding” contract=“Microsoft.TechDays07.IFoo” name=“WSHttpBinding_Ifoo” behaviorConfiguration=“clientCertAutheticationBehavior”/> </client> Point de terminaison <Behaviors> <endpointBehaviors> <behavior name=“clientCertAutheticationBehavior”> <clientCredentials> <clientCertificate findValue=“CN=Alice” storeLocation=“CurrentUser” storeName=“My”/> </clientCredentials> </behavior> </endpointBehaviors> </behaviors> Behavior © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Configuration de la sécurité de niveau Transport Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Configuration de la sécurité de niveau Transport Authentification Client Windows Kerberos Configuration Service <bindings> <wsHttpBinding> <binding name=“transportSecurityBinding”> <security mode=“Transport”> <transport clientCredentialType=“Windows”/> </security> </binding> </wsHttpBinding> </bindings> Binding <services> <service name=“Microsoft.TechDays07.Service”> <endpoint address=“https://localhost:6060/service” binding=“wsHttpBinding” bindingConfiguration=“transportSecurityBinding” contract=“Microsoft.TechDays07.Ifoo”/> </service> </services> Point de terminaison © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Sécurité d’accès aux ressources Autorisations
Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Autorisations CLR Scénarios de contrôle d’accès basé sur les rôles Demandes de permissions déclaratives ou impératives Intégration transparente avec les comptes Windows L’identité du client est exposé au service au travers de l’OperationContext.ServiceSecurityContext WindowsIdentity contient l’identité du client WindowsIdentity peut être utilisé pour l’impersonation du client L’identité du client est automatiquement liée au thread principal courant OperationContract (PrincipalPermission) Service (code impératif) © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Autorisations CLR Contrôlées par un Behavior ServiceAuthorization Rôles ASP.NET PrincipalPermissionMode.UseAspNetRoles Thread.CurrentPrincipal basé sur IPrincipal résultant de l’ASP.NET Role Provider ACLs Windows PrincipalPermissionMode.UseWindowsGroups Thread.CurrentPrincipal basé sur WindowsPrincipal <behavior name=“authorizationBehavior”> <serviceAuthorization principalPermissionMode=“UseAspNetRoles” /> </behavior> Behavior // Only a client authenticated with a valid certificate that has the // specified subject name and thumbprint can call this method. [PrincipalPermission(SecurityAction.Demand, Name=“CN=Alice; 123456712345677E8E230FDE624F841B1CE9D41E”)] public string SomeMethod1() { ... } Code Service © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Autorisations CLR Utilisation d’un fournisseur de rôles Attributs dans le code pour identifier les rôles Fournisseur de rôles Spécifié dans le fichier de configuration sous Providers dans RoleManager Relier les rôles dans le code aux rôles de l’outil d’administration Mécanisme extensible Assignation d’utilisateurs à des rôles Ex. Intégration avec Authorization Manager (AzMan) Cf. « How To: Use Authorization Manager (AzMan) with ASP.NET 2.0 » http://msdn.microsoft.com/library/en-us/dnpag2/html/PAGHT000019.asp [PrincipalPermission(SecurityAction.Demand, Role= “Foo”)] public string SomeMethod1() © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Autorisations CLR [PrincipalPermission(SecurityAction.Demand, Role= “Foo”)] public string SomeMethod1() Code Service <roleManager enabled=“true” defaultProvider=“AzManRoleProvider”> <providers> <add name=“AzManRoleProvider” type=“System.Web.Security.AuthorizationStoreRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, publicKeyToken=b03f5f7f11d50a3a" connectionStringName=“msxml://c:/TechDays07/azmanstore.xml” applicationName=“SecureService”/> </providers> </roleManager> <behaviors> <endpointBehaviors> <behavior name=“authorizationBehavior”> <serviceAuthorization principalPermissionMode=“UseAspNetRoles” roleProviderName=“AzManRoleProvider”/> </behavior> </endpointBehaviors> </behaviors> Behavior AzMan avec azmanstore.xml © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Impersonation du client Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Impersonation du client Les clients délèguent leurs crédentiels au service Le service peut s’exécuter sous l’identité du client (impersonation) Le service peut invoquer à son tour d’autres services de la part du client (délégation) WSHttpBinding, WSDualHttpBinding, et NetTcpBinding Avec ou sans transition de protocole Cf. « Kerberos Protocol Transition and Constrained Delegation » http://technet2.microsoft.com/WindowsServer/en/Library/c312ba01-318f-46ca-990e-a597f3c294eb1033.mspx Mécanismes d’authentification supportés Couple utilisateur/mot de passe Windows Kerberos Le client doit explicitement autoriser la délégation de ses crédentiels Certificat X.509 Doit pouvoir être mappé sur un compte Windows © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Impersonation du client Exprimé par code ou par configuration Peut être appliqué Au niveau Service Au niveau Opération Niveau Code <behavior> <serviceAuthorization ImpersonateCallerForAllServiceOperations=“true”/> </authorizationPolicies> </serviceAuthorization </behavior> Behavior [OperationBehavior(Impersonation=ImpersonationOption.Required)] public string SomeMethod1() Contrat public string SomeMethod1() { using (ServiceSecurityContext.Current.WindowsIdentity. Impersonate()) ... } Code Service
Impersonation du client Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Impersonation du client Le client définit explicitement le niveau d’impersonation autorisé Code Client -ou- Configuration Client proxy.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation; <client> <endpoint address="https://localhost:6060/service" binding="wsHttpBinding" bindingConfiguration=“Binding1" contract="Microsoft.TechDays07.IFoo" name="WSHttpBinding_IFoo" behaviorConfiguration="ClientWindowsCredential"/> </client> <behaviors> <endpointBehaviors> <behavior name="ClientWindowsCredential"> <clientCredentials> <windows allowedImpersonationLevel="Impersonation"/> </clientCredentials> </behavior> </endpointBehaviors> </behaviors> © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Autorisations basées sur les claims Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Autorisations basées sur les claims WCF offre un modèle de définition/programmation unifié basé sur les claims Les claims sont des informations sur une identité Déclaration d’un attribut ou d’un privilège spécifique Les crédentiels sont basés sur des claims Behaviors ServiceCredential et ClientCredential Les jetons de sécurité sont utilisés pour véhiculer les claims Binaires ou XML Utilisateur Windows Certificat X.509 Subject: CN=Alice Issuer: SomeCA SerialNumber: 1234567 ValidFrom: 2006-12-13 ValidUntil: 2007-12-12 SomeDomain\Alice Role: User Role: PM Role: FTE … Alice © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Autorisations basées sur les claims Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Autorisations basées sur les claims Nouveau modèle complémentaire introduit par WCF Plus générique Unification de la représentation des preuves véhiculées dans des jetons hétérogènes sous forme de claims Spécification via configuration de(s) politique(s) d’autorisation Large flexibilité pour exprimer des décisions de contrôles arbitraires basées sur la preuve disponible (claims) Prise en charge de très nombreux scénarios Identité fédérée Cf. « WCF Service Authorization with Claims » http://pluralsight.com/blogs/tjanczuk/archive/2006/06/15/27746.aspx Cf. « WCF Custom Security Tokens » http://pluralsight.com/blogs/tjanczuk/archive/2006/06/16/28046.aspx © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Autorisations basées sur les claims Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Autorisations basées sur les claims Jeton de sécurité Validation SecurityTokenAuthenticator Politique d’autorisation Politique d’autorisation externe Evaluation IAuthorizationPolicy ClaimSets avec Claims Contrôle d’accès ServiceAuthorizationManager Oui -ou- Non © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Autorisations basées sur les claims Validation Les claims sont extraits des jetons de sécurité Classe dérivée de SecurityTokenAuthenticator Associée à chaque type de jeton de sécurité pour réaliser l’authentification et l’extraction des claims La collection de claims (ClaimSet) est transmise à la couche d’autorisation OperationContext.ServiceSecurityContext.AuthorizationContext AuthorizationContext context = ServiceSecurityContext.Current.AuthorizationContext; foreach (ClaimSet claimSet in context.ClaimSets) { foreach (Claim claim in claimSet.FindClaims(ClaimTypes.Name, Rights.PossessProperty)) ... }
Autorisations basées sur les claims Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Autorisations basées sur les claims Evaluation et politique(s) d’autorisation WCF implémente un jeu de politiques par défaut Unification de la représentation des preuves véhiculées dans des jetons hétérogènes (X.509, Kerberos, SAML, etc.) Point d’extensibilité qui permet de manipuler une collection de claims Développement d’une politique d’autorisation qui évalue les claims en entrée et les transforme le cas échéant en un nouveau jeu de claims Implémentation d’une classe dérivée d’IAuthorizationPolicy Evaluate : EvaluationContext Collection ClaimSet d’OperationContext.ServiceSecurityContext.AuthorizationContext namespace Microsoft.TechDay07 { public class CustomAuthZPolicy : IAuthorizationPolicy #region IAuthorizationPolicy Members public bool Evaluate(EvaluationContext evaluationContext, ref object state) // TODO } … © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Autorisations basées sur les claims Contrôle d’accès Implémentation d’une classe d’autorisation dérivée de ServiceAuthorizationManager Appel de CheckAccessCore par WCF pour accorder/refuser l’accès pour chaque message reçu Evaluation d’OperationContext namespace Microsoft.TechDay07 { public class CustomAuthZManager: ServiceAuthorizationManager public override bool CheckAccessCore(OperationContext operationContext) foreach (Claim requiredClaim in _requiredClaims) // Check each required claim if (!FindMatchingClaim(requiredClaim, operationContext)) // Check each claimset return false; } return true;
Autorisations basées sur les claims Spécification du gestionnaire d’autorisation et des politiques Behavior ServiceAuthorization <behavior> <serviceAuthorization principalPermissionMode=“Custom” serviceAuthorizationManagerType=“Microsoft.TechDay07.CustomAuthZManager, service”> <!-- The serviceAuthorization behavior allows one to specify custom authorization policies. --> <authorizationPolicies> <add policyType="Microsoft.TechDay07.CustomAuthZPolicy, policy" /> </authorizationPolicies> </serviceAuthorization Behavior
Sécurité d’accès aux ressources Fédération
Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Identité fédérée Les services Web sont des agents autonomes Comment prouver qui je suis ? Qui peut se porter garant pour moi ? Comment savoir en qui accorder sa confiance ? Met l’accent sur la gestion explicite des relations de confiance entres les applications et services WS-Security permet qu’un message contienne plusieurs jetons de sécurité Certains de ces jetons peuvent correspondre à des identités D’autres jetons peuvent correspondre à des droits accordés Ils peuvent être chiffrés et validés dans le cadre général d’un schéma d’autorisation Nécessite que des processus ou des systèmes qui étaient centralisés évoluent vers un modèle fédéré © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM WS-Trust, la fondation Introduit la notion de Security Token Service (STS) Un STS est potentiellement tout service capable d’émettre des jetons Définit un protocole pour demander et obtenir des jetons de sécurité Le client envoie un message RequestSecurityToken (RST) au STS Ce message demande un jeton de sécurité (entête) Le STS répond avec un message RequestSecurityTokenResponse (RSTR) Ce message contient le jeton de sécurité demandé et les détails associés dans le corps du message Les jetons sont destinés à tout type d’usage Sécurisation d’une séquence de messages, authentification et contrôle d’accès Plusieurs modèles de génération de jetons Le client obtient le jeton Le service obtient le jeton pour le client © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Chaîne de confiance fédérée typique Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Chaîne de confiance fédérée typique Requiert un jeton de FS-A FS-A Service de jetons de Securité (STS) Authentification FS-R Service de jetons de Securité (STS) Autorisation Validation Evaluation Je suis Alice (SAML) Evaluation Validation Accès autorisé pour Alice (SAML) Requiert un jeton de FS-R Je suis Alice (X.509) Voici un jeton pour FS-R (SAML) Validation Messages Contrôle d’accès Client Service fédéré Domaine de confiance Client Domaine de confiance Service © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Chaîne de confiance fédérée typique Support de multiples topologies de confiance n STSes signifie n paires de RST+RSTR Récursivité Récursivité C Indirecte – C garant de A et des identités de C Délégation A Directe B Directe
Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Identité fédérée WCF supporte CardSpace Que le bigbang de l’identité commence !! Cf. Session « Introduction à Windows CardSpace » Cf. Hands-on-lab « Windows CardSpace » © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM En guise de conclusion La communication WCF Est sécurisée par défaut L’ensemble des bindings standard sont sécurisés par défaut Le niveau de protection par défaut est encrypt and sign Il est question de jetons de sécurité et de claims Large jeu extensible de types de jeton supportés Offre une expérience de programmation unifiée Conçue pour les scénarios On-Machine, Cross-Machine, et Cross-Internet scenarios Architecture modulaire, flexible et extensible Cohérente entre les bindings, entre les jetons de sécurité Est interopérable et basée sur des standards Basée sur les spécifications/protocoles WS-* Compatible avec les mécanismes de sécurité existants (Kerberos, X.509, HTTPS, etc.) © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Où trouver de l’information Next Generation Business Solutions Platform Strategy Review 4/10/2017 9:51 PM Où trouver de l’information Un point d’entrée : netFx3 http://wcf.netfx3.com Documentation MSDN Sécurité WCF http://msdn2.microsoft.com/en-us/library/7ea87fcb-dcfb-4a4a-8b03-6b954575d45b.aspx Des blogs Nicholas Allen http://blogs.msdn.com/drnick Vittorio Bertocci http://blogs.msdn.com/vbertocci Tomasz Janczuk http://pluralsight.com/blogs/tjanczuk © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
4/10/2017 9:51 PM Questions ? © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
La référence technique pour les IT Pros : La référence technique technet.microsoft.com 4/10/2017 9:51 PM La référence technique pour les développeurs : msdn.microsoft.com Abonnement TechNet Plus : Versions d’éval + 2 incidents support Visual Studio 2005 + Abonnement MSDN Premium S’informer - Un portail d’informations, des événements, une newsletter bimensuelle personnalisée Se former - Des webcasts, des articles techniques, des téléchargements, des forums pour échanger avec vos pairs Bénéficier de services - Des cursus de formations et de certifications, des offres de support technique © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Votre potentiel, notre passion TM 4/10/2017 9:51 PM Votre potentiel, notre passion TM © 2007 Microsoft France © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.