La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft."— Transcription de la présentation:

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

2 Introduction Les Web Services sont un modèle à deux vitesses Une galerie de normes quasi-exhaustive Multiples consortiums, multiples normes, multiples utilisations Des implémentations très disparates Le plus petit dénominateur commun entre tous les éditeurs Lutilisation en entreprise pêche souvent Par le manque de connaissances des standards disponibles Par un manque dimplémentations simples de ces standards Des scénarios catastrophe se montent peu à peu Implémentation manuelle dun standard Réinvention de la roue Confiance quasi-absolue dans le comportement des appelants Adaptation du service aux besoins dun client spécifique

3 Notre agenda Rappeler brièvement les concepts associés à la sécurité des échanges de messages Présenter les normes associées Montrer comment les implémenter dans le monde Microsoft Identifier les patterns de sécurité des messages Appliquer et composer ces patterns Mettre WCF (ex-Indigo) en perspective … et vous donner les pointeurs permettant daller plus loin

4 La sécurité des échanges de message Authentification Lémetteur est identifié sans ambiguïté Intégrité Les messages nont pas été modifiés Confidentialité Les messages nont pas été interceptés Non-répudiation Lémetteur ne peut pas renier ses messages Disponibilité Les messages sont traités Routage Le lien avec la sécurité est indirect, mais nous en aurons besoin pour définir des périmètres de confiance

5 Evolve and Extend Secure, Reliable, Transacted Fundamentals Carte des standards WS-* WS-ReliableMessaging Reliability WS-I formed Interopérabilité WS-I BP 1.0 Security Roadmap Whitepapers Reliable Messaging Roadmap SRT Web Services Whitepaper WS-Security WS-Trust Security WS-Security Addendum WS-Security Profile for Tokens WS-Security Addendum WS-Security Profile for Tokens WS-Federation WS-Federation Active Requestor Profile WS-Federation WS-Federation Active Requestor Profile WS-Security SOAP Message Security WS-Security Username Token Profile WS-Security X.509 Certificate Token Profile WS-Security SOAP Message Security WS-Security Username Token Profile WS-Security X.509 Certificate Token Profile WS-Security Kerberos Binding WS-Coordination WS-Transaction WS-Coordination WS-Transaction Transactions WS-AtomicTransaction WS-BusinessActivity SOAP 1.1 Messaging SOAP Messages with Attachments SOAP Messages with Attachments WS-Referral WS-Routing WS-Referral WS-Routing DIME WS-Attachments WS-Addressing SOAP 1.2 MTOM WS-Eventing WS-Policy 1.1 WS-PolicyAttachments 1.1 WS-PolicyAssertions 1.1 WS-Policy 1.1 WS-PolicyAttachments 1.1 WS-PolicyAssertions 1.1 WS-Policy WS-PolicyAttachments WS-PolicyAssertions WS-SecurityPolicy WS-Policy WS-PolicyAttachments WS-PolicyAssertions WS-SecurityPolicy Metadata UDDI 1.0 WSDL UDDI 2.0 WS-Inspection UDDI 3.0 WS-Discovery WS-MetadataExchange WS-Discovery WS-MetadataExchange As of 2/2004

6 WS-SECURITY

7 Les standards nous concernant WS-Security Intégrité, confidentialité, et inclusion dun jeton de sécurité WS-Trust Etablissement de jetons de sécurité WS-Federation Fédération de la gestion didentité WS-SecureConversation Etablir un contexte de sécurité et échanger des clés de session permettant déchanger N messages dans un même contexte WS-SecurityPolicy Décrit les assertions spécifiques à la sécurité, utilisées dans WS-Security, WS-Trust, et WS-SecureConversation

8 Web Services Architecture Chacun de ces blocs a son propre espace sur MSDN us/dnglobspec/html/wsspecsover.asp us/dnglobspec/html/wsspecsover.asp

9 Comment aborder ces standards ? Chaque scénario comporte des contraintes spécifiques qui demandent une combinaison intelligente de différents standards Pour appréhender cette complexité, on définit des patterns Patterns dauthentification Patterns de confidentialité Patterns dintégrité etc. Votre rôle est de connaître et composer ces patterns et didentifier les forces et faiblesses de la solution retenue Le rôle de Microsoft est de fournir des outils simplifiant la mise en œuvre de votre solution.

10 SOAP Tool Kit.NETFramework Web Services Enhancements Windows Communication Foundation Beta 1 Beta 2 (? Go Live) V1.0Longhorn V1.0 V2.0 V3.0 V1.0 V1.1 V2.0 SDK V1.0 V2.0 V3.0 Outils Microsoft pour les Services Web

11 PATTERNS DE SECURITE

12 Patterns dauthentification Lidentité peut circuler Dans le message Dans la couche de transport du message Lauthentification peut être Directe (point à point) Mutualisée (déléguée à un serveur tiers) Facteurs importants Présence dintermédiaires dans la communication Confiance en ces intermédiaires Contraintes réseau spécifiques (firewalls)

13 Patterns dauthentification

14 Jetons dauthentification Secret Key Password Proof of Possession Signed … X.509 Kerberos XrML SAML Unsigned … Username Valid To Serial Number VersionSubject Public Key Issuers Digital Signature Valid From Issuer Other Fields Signature Algorithm Déclaration dun droit privilège ou attribut spécifique Les messages véhiculent des jetons de sécurité qui lexpression de ces déclarations Déclaration dun droit privilège ou attribut spécifique Les messages véhiculent des jetons de sécurité qui lexpression de ces déclarations

15 WS-Security: « UsernameToken » Username (le mot de passe est facultatif) PasswordText : mot de passe complet PasswordDigest: hash du mot de passe

16 Patterns de protection du message Le message peut être ChiffréAuthentifiéSigné La combinaison de ces facteurs assure La confidentialité La non-répudiation Lintégrité

17 Patterns de protection des messages

18 Signature du message (ou dune portion) avec une signature Vérification que le message na pas été modifié pendant léchange ->Non-répudiation Signatures multiples autorisées dans un message Syntaxe XML utilisée pour représenter une signature numérique Algorithme reposant sur XML-Signature : Transformation via clé privée Schéma défini : WS-Security : intégrité du message Senders Private Key + + = = Senders Public Key

19 XML Signature - intégrité Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1" /> VKTFU9Zc3vFvmjvYJn6cV1y+e38= Norme de canonisation retenue Algorithme retenu pour créer la signature Identification des données signées Données de signature

20 XML Encryption Chiffrement du message ou dune portion du message Tags utilisés dans le corps du message (pas dzans lentête) Supporte les algorithmes à clé symétrique ou asymétrique Schéma défini : Chiffrement des pièces jointes Entête et tag Entête et tag Pas de chiffrement des pièces jointes binaires WS-Security : Confidentialité + + = =Receivers Public Key Receivers Private Key

21 XML-Encryption : confidentialité xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"> CN=Hiroshi Maruyama, C=JP CN=Hiroshi Maruyama, C=JP Données chiffrées

22 Authentification directe : Patterns et références

23 Sécurité de niveau transport et plateforme Client Transport Service Transport Transport Sécurisé La Platforme et le transport fournissent la sécurité Identification de lappelant Intégrité du message Confidentialité du Message XML

24 IIS (inetinfo.exe) ASP.NET Web Service (aspnet_wp.exe) Authentification Anonyme Basic Digest Integrée Certificats Authentication Windows None (Custom) Web Server Locator Remote Resource Autorisation NTFS Permissions IP Address Restrictions Authorization File AuthZ URL AuthZ.NET Roles SOAP Header (optionnel) SOAP Body Authentication Authenticated callers access token (or IUSR_MACHINE access token) Identity ASP.NET Process Original Caller Fixed Service Identity Sécurité de niveau plateforme

25 Sécurité de niveau message Les messages XML véhiculent les informations de sécurité Paramètres didentification Signatures digitales Les messages peuvent être chiffrés Client Transport Service Transport Any transport XML La sécurité est indépendante du protocole de transport XML

26 Authentification via broker : Patterns et références

27 WS-Trust : Acquisition de jetons de sécurité Plusieurs modèles de génération de jetons Le client obtient le jeton Le service obtient le jeton pour le client Fondée essentiellement sur deux éléments envoyés dans le corps SOAP : Un message est envoyé au service de confiance Ce message demande un jeton de sécurité Le service de confiance répond avec in message Le service de confiance répond avec in message Ce message contient le jeton de sécurité demandé et les détails associés

28 Principes de fonctionnement Applicationcliente Consommateur didentité Politique Fournisseurdidentité Service de jetons de sécurité Politique 2 Lecture de la politique définissant les preuves requises et les fournisseurs didentité : « Je souhaiterais recevoir un jeton contenant givenName et lastName dont le tokenType est SAML 1.1, émis par nimporte qui » Sélecteur didentité 3 Filtrage des cartes qui pourraient satisfaire les exigences du consommateur didentité 4 Lutilisateur sélectionne une carte depuis la liste des identités appropriées dans le sélecteur didentité 6 Le fournisseur didentité produit le jeton de sécurité contenant les preuves requises Jeton 1 Accès à la Ressource 7 Lapplication relaye le jeton de sécurité au consommateur didentité 5 Le sélecteur didentité présente les crédentiels au fournisseur didentité et demande un jeton de sécurité Crédentiels

29 WS-SecureConversation : Création dun contexte de sécurité Request for SCT SCT Issued to client Series of messages signed with issued SCT ClientServer

30 WSE

31 ALLER DESERIALIZE (XML natif) Interception (avant et après) ! ALLER DESERIALIZE (XML natif) Interception (avant et après) ! RETOUR SERIALIZE (natif XML) Interception (avant et après) ! RETOUR SERIALIZE (natif XML) Interception (avant et après) ! ALLER SERIALIZE (natif XML) Interception (avant et après) ! ALLER SERIALIZE (natif XML) Interception (avant et après) ! RETOUR DESERIALIZE (XML natif) Interception (avant et après) ! RETOUR DESERIALIZE (XML natif) Interception (avant et après) ! Fournisseur WS Client WS SOAP Extensions serializeserialize deserializedeserialize FlightInfo deserializedeserialize serializeserialize Utilis é e pour des fonctionnalit é s plus avanc é es Intercepte les appels destin é s à un service Web Pr é traitement et post-traitement

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

33 Configuration depuis Visual Studio group="0"/>

34 Mais aussi depuis un outil externe

35 Sécurité : la couverture de WSE Authentification Jetons de sécurité : Microsoft.Web.Services3.Security.SecurityToken Couple utilisateur/mot de passe : UsernameToken Jetons binaires : BinarySecurityToken Certificat X509 : X509SecurityToken Jeton Kerberos : KerbersoSecurityToken SAML : Microsoft.Web.Services3.Security.SAML Signature des messages XML Signature : Microsoft.Web.Services3.Security.MessageSignature Chiffrement des messages XML Encryption : Microsoft.Web.Services3.Security.Cryptography Gestion et définition de relation de confiance entre entités WS-Trust : Microsoft.Web.Services3.Security Contexte de sécurité entre deux services pour des échanges de plusieurs messages dans ce même contexte WS-SecureConversation : Microsoft.Web.Services3.Security

36 SCENARIO 1 Approche programmatique

37 Exemple : Le certificat Obtention Par une autorité de certification tels que CertiNomisVerisignThawte Un service interne Windows Server 2000 ou 2003 (makecert.exe) J2EE (keytool.exe), Apache, etc. Obtention Par une autorité de certification tels que CertiNomisVerisignThawte Un service interne Windows Server 2000 ou 2003 (makecert.exe) J2EE (keytool.exe), Apache, etc.

38 X509 : coté serveur Au minimun, il convient de Vérifier quil y a bien un contexte de sécurité Vérifier quil y a bien la présence dun élément de sécurité Déclarer dans le fichier web.config Lutilisation de WSE Lutilisation de lauthentification X509 WSE fait le reste !

39 Le code serveur using Microsoft.Web.Services; using Microsoft.Web.Services.Timestamp; using Microsoft.Web.Services.Security; using Microsoft.Web.Services.Security.Tokens; using Microsoft.Web.Services.Security.X509; namespace ConvertToolsLogin { public class ConvertTools { [System.Web.Services.WebMethod] public double ConvertEuros2Francs(double euros) { CheckAutorization(); return euros * ; } private void CheckAutorization() { if(Microsoft.Web.Services.RequestSoapContext.Current == null) throw new System.ApplicationException("Seules les requêtes SOAP sont acceptées..."); if(Microsoft.Web.Services.RequestSoapContext.Current.Security.Tokens.Count==0) throw new System.ApplicationException("Seules les requêtes SOAP sécurisée sont acceptées..."); } Le service Web Vérification De la présence Du certificat

40 Le fichier web.config

WuaA9VPIiNkMjQJ8HXODG4tNFjE= Utilisation des extensions Soap Gestion des extensions Soap Configuration X509

41 X509 : coté client Recherchez et chargez un certificat dans un objet X509Certificat Insérez la trace du certificat dans lentête Soap Invoquez le service Web

42 Le code client using Microsoft.Web.Services.Security; using Microsoft.Web.Services.Security.X509; public class TestConvertTools { public static void Main() { ConvertTools c = new ConvertTools(); X509SecurityToken X509Token = GetX509Token(); c.RequestSoapContext.Security.Tokens.Add( X509Token ); c.RequestSoapContext.Timestamp.Ttl = 60000; System.Console.WriteLine("Euros vers francs : "+c.ConvertEuros2Francs(15)); } private static X509SecurityToken GetX509Token() { X509CertificateStore entrepot = X509CertificateStore.CurrentUserStore(X509CertificateStore.MyStore); if(!entrepot.OpenRead()) throw new System.ApplicationException("Pas d'entrepot de certificats !!!"); string ClientBase64KeyId = "gBfo0147lM6cKnTbbMSuMVvmFY4="; X509CertificateCollection certs = entrepot.FindCertificateByKeyIdentifier( System.Convert.FromBase64String( ClientBase64KeyId ) ); if(certs==null) throw new System.ApplicationException("Le certificat exemple n'existe pas..."); X509SecurityToken X509Token = null; if (certs.Count > 0) X509Token = new X509SecurityToken( ((X509Certificate) certs[0]) ); else throw new System.ApplicationException("Le certificat exemple n'a pas été trouvé..."); return X509Token; } Ajout du Certificat dans len-tête SOAP Recherche et Récupération Dun certificat

43 Démonstration Scenario 1

44 SCENARIO 2 Approche déclarative

45 WS-SecurityPolicy « Web Services Security Policy Language » IBM, Microsoft, RSA, VeriSign, Décembre Définit un ensemble d'assertions de politique lié aux concepts définis par les autres spécifications de sécurité Permet aux participants de spécifier Types de jeton, émetteurs, etc. Exigences dintégrité et de confidentialité Algorithmes supportées Exemples Politique des applications et services Quels sont les jetons/assertions nécessaires pour la requête ? Où les clients peuvent-ils obtenir ces jetons/assertions ? Politique de services de jetons de sécurité Quels sont les jetons/assertions acceptés ? Quels sont les jetons/assertions fournis ? Politique

46 Capitaliser sur des scénarios de sécurité clé en main Meilleures pratiques : 5 scénarios 1 scenario = 1 assertion (« Policy ») UsernameOverCertificateAnnonymousOverCertificateUsernameOverTransportKerberosMutualX509

47 Scénario de sécurité clé en main Application Server Internet Intranet Authenticate username/ Password Confidential, signed request using a key protected with the server certificate Confidential, signed response using the supplied key Username/Password for Authentication UsernameOverCertificate

48 Démonstration Scenario 2

49 Windows Communication Foundation

50 Unification des technologies middleware Architecture modulaire et composable Framework unifié pour créer des applications orientées services sur la plate-forme Windows Interopérabilité avec les autres plateformes Interopérabilité avec les technologies courantes Model de programmation orienté service Support natif des protocoles WS-* Windows Communication Foundation

51 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 lextension des canaux qui assurent le transfert des messages Code du Service Transaction Behavior CLR Type Integration Instancing Behavior Security Channel TCP Transport Security Channel TCP Transport Transaction Behavior CLR Type Integration

52 Service CBA CBA Client Address, Binding, Contract A BC Address Où? Contract Quoi? Binding Comment? Endpoint CBA Bv

53 Demo Service

54 Demo Client

55 Mode de sécurité par défaut BindingMode de sécurité par défaut basicHttpBindingNone wsHttpBindingMessage wsDualHttpBindingMessage wsFederationBindingMessage netTcpBindingTransport netNamedPipeBindingTransport netMsmqBindingMessage netPeerTcpBindingTransport msmqIntegrationBindingTransport

56 Paramétrage du mode de sécurité Par code : BasicHttpBinding b = new BasicHttpBinding(); b.Security.Mode = BasicHttpSecurityMode.Transport; b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; host.AddServiceEndpoint(typeof(IEchoService), b, "svc"); Par configuration :

57 Niveau de protection des messages 3 niveaux de protection : NoneSignEncryptAndSign Configuration du niveau de protection :

58 Modes dauthentification WCF supporte plusieurs modes dauthentification : Anonyme Windows : Scénarios Intranet Jetons Utilisateur (avec/sans fournisseur ASP.NET) : Scénarios B2C dhier InfoCard : Scénarios B2C de demain Certificats : Scénarios B2B Jetons délivrés par un Security Token Service : Scénarios B2B de demain Encapsulation dans la couche transport ou au sein de messages Configuration du mode dauthentification :

59 Spécification des paramètres didentité Spécification du mode dauthentification par code « SetUserNamePassword » Spécification du mode dauthentification par configuration : Client : Service :

60 Gestion des autorisations Attributs dans le code pour identifier les Rôles [PrincipalPermission(SecurityAction.Demand, Role = Administrator")] string IResourceAccessContract.AccessDiamond() Assignation dutilisateurs à des rôles avec loutil dadministration (Authorization Manager) Fournisseur de rôles Spécifié dans le fichier de Configuration Relier les rôles dans le code aux rôles de loutil dadministration Mécanisme extensible

61 Démonstration WCF

62 Patterns

63 Patterns…

64 Conclusion WS-Security permet aux services Web de bénéficier des technologies de sécurité existantes Authentification Jetons de sécurité Signature des messages : XML Signature Chiffrement des messages : XML Encryption Microsoft fournit aujourdhui deux implémentations de WS- Security : WSE 3.0 et Windows Communication Foundation (Beta 2) WSE 3.0 est interopérable avec WCF Les assertions de scénarios de sécurité « clé en main » WSE sont équivalentes aux éléments « binding » de sécurité de WCF Ces deux briques technologiques permettent de programmer ou configurer : Authentification, autorisations, confidentialité, et traçabilité En proposant des scénarios de sécurisation par défaut En capitalisant sur linfrastructure Windows pour les scénarios intranet

65 2007 Longhorn Server 2006 WinFX Beta 2 (Janvier 2006) Biztalk 2006 (mars 2006) Vista (fin 2006) WinFX (fin 2006) Office 12 septembre Visual Studio 2005 (depuis le 8 Novembre) SQL Server 2005 (depuis le 8 Novembre) Windows Server 2003 R2 (ADFS) Biztalk 2006 Beta 2 Office 12 Beta 1 Roadmap Plateforme

66 Resources Portail des architectes MS France france/msdn/architects/de fault.mspx france/msdn/architects/de fault.mspx WSE /webservices/building/wse /default.aspx /webservices/building/wse /default.aspx WCF /webservices/indigo/defau lt.aspx /webservices/indigo/defau lt.aspx

67 Les dates Visual Studio Team System vu par le développeur Architecture orientée service avec Windows Communication Foundation Intégrer un workflow dans vos applications avec Windows Workflow Foundation Office 12 vu par le développeur Vers le Web 2 Vers une nouvelle expérience utilisateur

68 7 Mars : Nantes 9 Mars : Lille 14 Mars : Strasbourg 23 Mars : Paris 28 Mars : Marseille 30 Mars : Toulouse 4 Avril : Lyon

69 Microsoft France 18, avenue du Québec Courtaboeuf Cedex


Télécharger ppt "Sécurisation des services Web avec WSE 3.0 et WCF Pierre COUZY Winwise Stéphane GOUDEAU Microsoft."

Présentations similaires


Annonces Google