SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
Sécurisation des WCF   Auteur: Marc-Aurèle KOUAIK
SOMMAIRE

             1. Présentation
             2. Mise en place d’un service Web WCF
             3. Paramétrage basique du service WCF
             4. Création du client
             5. Appel des méthodes du service Web
             6. Paramétrage du client
             7. Test du service Web
             8. Gestion de la sécurité du service Web
                  8.1 Paramétrage de l’authentification
                  8.2 Paramétrage des autorisations
             9. Conclusion




19/01/2012       Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   2
2. Présentation

    WCF est à la nouvelle norme Microsoft pour tous types de services, qu’il s’agisse de
    service Windows ou de service Web.
    Tous répondent à cette normalisation ce qui simplifie la manière de communiquer
    entre les différents composants d’une solution, ou même avec les applications créées
    par d’autres collaborateurs.
    La communication des services WCF est basée sur le protocole SOAP.

    La sécurité de ces services consiste à leur inclure l’authentification, l’encryptage des
    données et l’assurance de l’intégrité des données.
    Nous allons voir comment traiter ces points par un exemple concret.




19/01/2012    Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   3
2.Mise en place d’un service Web WCF
    Création d’un nouveau projet « Application du service WCF ».

    Par défaut, nous voyons bien que Visual Studio a créé un service Service1, son
    interface IService1 servant de contrat pour communiquer, et a créé le fichier de
    configuration (ici Web.config, car il s’agit d’une application de service destiné à être
    hébergée sous IIS, c'est-à-dire un service Web).




    J’aurais aussi pu créer un projet de type « Bibliothèque de service » pour générer un
    service Windows.

     J’aurais alors eu un projet contenant une classe Service1, son interface IService1 et un fichier de
     configuration app.config.




19/01/2012         Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   4
2.Mise en place d’un service Web WCF (suite)

    Cependant je vais rester sur le service Web pour effectuer ma démonstration.
    Le service contient aussi par défaut deux méthodes d’appel.
    La première public string GetData(int value) permet de récupérer les données à partir
    d’un entier passé en paramètre.

    La seconde public CompositeType GetDataUsingDataContract(CompositeType
    composite) permet de récupérer les données en passant en paramètre un type
    complexe, et en retournant ce même objet mis à jour.
    Le fichier d’interface contient l’interface présentant les méthodes exposées par le
    service. Elle a donc pour attribut [ServiceContract] et les méthodes qu’elle expose ont
    pour attribut [OperationContract].

    Au niveau du type complexe utilisé pour faire passer les données dans la méthode
    GetDataUsingDataContract, celui-ci est défini dans une classe qui a pour attribut
    [DataContract] et chacun des membres qu’elle expose ont pour attribut
    [DataMember].



19/01/2012    Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   5
3.Paramétrage basique du service WCF
    Par défaut, Visual Studio laisse complètement ouvert l’accès au service.
    Pour permettre plus de précision dans la configuration, je conseille de configurer les
    points d’entrée en spécifiant une configuration de binding et de behaviour pour le
    service et pour les endpoints.




19/01/2012    Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   6
3.Paramétrage basique du service WCF (suite)
    La configuration des bindings peut aussi être personnalisée.
    On pourra alors créer un bloc de configuration de bindings comme il suit :




    Il faudra alors lier le point d’entrée à cette configuration :




19/01/2012    Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   7
4.Création du client
    Pour créer le client, j’utilise l’utilitaire svdutil.exe, qui va générer le client.
    Pour pouvoir l’utiliser, le service doit être en fonction.

    Je lance donc l’application puis l’utilitaire avec la ligne de commande suivante :
    svcutil.exe http://localhost:3312/Service1.svc?wsdl

    L’utilitaire me créé un fichier Service1.cs qui correspond à ma classe client du service.
    Cette classe contient tout le nécessaire pour faire appel au service.




19/01/2012     Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   8
5. Appel des méthodes du service Web
    Pour faire appel aux méthodes du service, je créé une application cliente (de type
    console par exemple).



    J’ajoute à ce projet la classe client que je viens de générer.




    Dans la méthode Main de la classe Program, je fais appel aux méthodes du service.




19/01/2012    Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   9
6. Paramétrage du client

    J’effectue le paramétrage du client en ajoutant un fichier app.config.


    Dans la configuration j’ajoute les tags relatifs à la configuration du client, dans lesquels
    je configure les points d’entrée au service.

    Pour pouvoir configurer le port d’écoute, je force Visual Studio à lancer le service web
    (hébergé sous IIS) avec un port bien précis.

    J’effectue ceci dans les propriétés du projet de site web.




19/01/2012    Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   10
6. Paramétrage du client (suite)
    Voici donc la configuration du client :




19/01/2012    Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   11
7. Test du service Web
    Pour tester l’appel au service, je démarre les deux projets en simultanés
    L’ application Console devra attendre que le service soit disponible. Il faut donc régler
    l’ordre d’exécution des projets.




    Nous pouvons alors tester la solution.




    Le rendu montre bien que le client appelle bien le service qui modifie les données
    envoyées avant de les retourner. Les deux méthodes sont appelées sans problème.



19/01/2012    Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   12
8. Gestion de la sécurité du service Web
    8.1 Paramétrage de l’authentification
    L’authentification est gérée par le mode de sécurité du binding.
    Il existe trois possibilités pour paramétrer le mode de sécurité du binding :
    - le mode « Transport », qui permet une connexion en secure socket (SSL) et nécessite
    l’authentification à l’appel. Ce mode est possible pour tous les bindings.
    - Le mode « Message », qui nécessite que les données d’authentification et de sécurisation soient
    présentes dans les entêtes de chaque message. Il ne peut fonctionner que pour une
    communication de point à point (sans intermédiaire). N’est pas permis pour le WebHttpBinding.
    - Le mode « TransportWithMessageCredential » utilise les fonctionnalités de SSL pour la sécurité
    de transport des messages, et la méthode se sécurité du mode message pour chaque message.
    Pour activer le mode « Transport » il faut configurer l’hôte avec un certificat SSL (en l’occurrence
    pour un service Web, le paramétrage est à effectuer sous IIS.). Une fois le service sous HTTPS, il
    faut paramétrer le mode de sécurité du binding de la manière suivante pour le serveur et pour le
    client :

    Pour travailler sous Visual Studio, Microsoft a permis un mode permettant de gérer
    l’authentification comme si l’on était en HTTPS, mais en restant en HTTP.
    La configuration utilisée est :




19/01/2012     Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   13
8. Gestion de la sécurité du service Web (suite)
    8.1 Paramétrage de l’authentification (suite)

    Par la suite, le type d’authentification est défini dans le tag <transport>, comme par exemple :




    Pour un service Web (webHttpBinding) utilisant le mode de sécurité « Transport », les différents types
    d’authentification sont :
    - None : désactive l’authentification.
    - Basic : le client est authentifié avec un login et mot de passe. Il n’y a pas de cryptage des données
    avant transfert.
    - Digest : Similaire à l’authentification basique sauf que le login et le mot de passe sont cryptés par une
    fonction de hachage avant d’être transmis, ce qui permet de ne pas les voir en clair.
    - Ntlm : force l’authentification NTLM
    - Windows : utilise l’authentification utilisée sur le serveur Windows (Active directory ou NTLM).
    - Certificate : le client doit présenter un certificat X.509 que le service valide.

    Pour les autres types de binding, notament ceux basés sur le mode de sécurité « Message », les types
    d’authentification peuvent aussi être :
    - IssuedToken : le client et le service dépendent d’un service de token sécurisés STS comme Microsoft
    Windows CardSpace.
    - UserName : le client est authentifié par nom d’utilisateur et mot de passe.


19/01/2012      Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   14
8. Gestion de la sécurité du service Web (suite)

    8.2 Paramétrage des autorisations
    Pour faire passer l’authentification Windows, il faut modifier la configuration et
    ajouter le tag suivant dans <system.serviceModel> :


    Pour pouvoir l’intercepter, la classe du service doit paramétrer la compatibilité
    ASPNET, en positionnant en entête de la classe :


    Cette classe est dans l’espace de nom System.ServiceModel.Activation.
    Une fois ce paramétrage effectué, il est alors possible d’atteindre le contexte HTTP du
    service Web.

    Dans le contexte, il est possible de récupérer l’identité de l’utilisateur.
    J’ai donc modifié la requête GetData de manière à récupérer et retourner les données
    de l’utilisateur, et vérifier que l’utilisateur a le rôle lui donnant accès aux données du
    service.



19/01/2012    Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   15
8. Gestion de la sécurité du service Web (suite)
    8.2 Paramétrage des autorisations (suite)
    Une fois ce paramétrage effectué, il est alors possible d’atteindre le contexte HTTP du
    service Web.
    Dans le contexte, il est possible de récupérer l’identité de l’utilisateur.
    J’ai donc modifié la requête GetData de manière à récupérer et retourner les données
    de l’utilisateur, et vérifier que l’utilisateur a le rôle lui donnant accès aux données du
    service.




19/01/2012    Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   16
8. Gestion de la sécurité du service Web (suite)
    8.2 Paramétrage des autorisations (suite)

    Dans le code, j’ai vérifié si l’utilisateur avait le rôle « AyandDroitAuService ».
    Ce rôle doit être défini dans les rôles dans le serveur Windows hébergeant le service
    web, et l’utilisateur doit être connu de ce serveur.

    De plus cet utilisateur doit avoir ce rôle dans le serveur pour pouvoir accéder à la
    méthode GetData.

    Le résultat obtenu montre qu’en l’occurrence l’utilisateur n’a pas les droits pour
    utiliser la méthode GetData.




19/01/2012    Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   17
9. Conclusion

    WCF permet assez facilement de créer des services sécurisés.
    Il est possible de définir tous les paramètres au niveau de la configuration. Il est aussi
    possible de faire de même dans le code.

    Personnellement, je préfère le paramétrage par le biais de la configuration, car cela
    permet une plus grande souplesse en cas de migration ou de changement de
    stratégie.

    Mon exemple est basé sur un service Web, mais je rappelle qu’il est possible de faire
    de même avec un service Windows.

    Le service Windows a de plus l’avantage de ne pas être dépendant du protocole http,
    ce qui permet davantage de possibilités de modes de communication et donc
    davantage de possibilités pour paramétrer la sécurité.




19/01/2012    Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com   18

Contenu connexe

Tendances

Rapport MS Exchange 2010
Rapport MS Exchange 2010Rapport MS Exchange 2010
Rapport MS Exchange 2010Majid CHADAD
 
Présentation Exchange 2010
Présentation Exchange 2010Présentation Exchange 2010
Présentation Exchange 2010Majid CHADAD
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)ENSET, Université Hassan II Casablanca
 
comment realiser un Service Web
comment realiser un Service Web comment realiser un Service Web
comment realiser un Service Web Nazih Heni
 
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...ENSET, Université Hassan II Casablanca
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWSLilia Sfaxi
 
Tp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELTp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELLilia Sfaxi
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyENSET, Université Hassan II Casablanca
 

Tendances (20)

Support programmation orientée objet c# .net version f8
Support programmation orientée objet c#  .net version f8Support programmation orientée objet c#  .net version f8
Support programmation orientée objet c# .net version f8
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Rapport MS Exchange 2010
Rapport MS Exchange 2010Rapport MS Exchange 2010
Rapport MS Exchange 2010
 
Présentation Exchange 2010
Présentation Exchange 2010Présentation Exchange 2010
Présentation Exchange 2010
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
comment realiser un Service Web
comment realiser un Service Web comment realiser un Service Web
comment realiser un Service Web
 
Tp java ee.pptx
Tp java ee.pptxTp java ee.pptx
Tp java ee.pptx
 
Cours wpf avancé
Cours wpf avancéCours wpf avancé
Cours wpf avancé
 
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...Cours design pattern m youssfi partie 8 stat, template method, command , medi...
Cours design pattern m youssfi partie 8 stat, template method, command , medi...
 
Cours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapterCours design pattern m youssfi partie 5 adapter
Cours design pattern m youssfi partie 5 adapter
 
Tp1 - WS avec JAXWS
Tp1 - WS avec JAXWSTp1 - WS avec JAXWS
Tp1 - WS avec JAXWS
 
Cours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweightCours design pattern m youssfi partie 7 facade bridge flyweight
Cours design pattern m youssfi partie 7 facade bridge flyweight
 
Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)Support programmation orientée aspect mohamed youssfi (aop)
Support programmation orientée aspect mohamed youssfi (aop)
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 
Maven et industrialisation du logiciel
Maven et industrialisation du logicielMaven et industrialisation du logiciel
Maven et industrialisation du logiciel
 
Tp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELTp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPEL
 
Cours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategyCours design pattern m youssfi partie 1 introduction et pattern strategy
Cours design pattern m youssfi partie 1 introduction et pattern strategy
 

Similaire à Sécurisation des wcf

Déployer une application directement depuis visual studio 2010
Déployer une application directement depuis visual studio 2010Déployer une application directement depuis visual studio 2010
Déployer une application directement depuis visual studio 2010Novencia Groupe
 
eServices-Tp2: bpel
eServices-Tp2: bpeleServices-Tp2: bpel
eServices-Tp2: bpelLilia Sfaxi
 
Utilisation d'une api web avec asp
Utilisation d'une api web avec aspUtilisation d'une api web avec asp
Utilisation d'une api web avec aspNovencia Groupe
 
presentation_NET creation et consomation de services.pptx
presentation_NET creation et consomation de services.pptxpresentation_NET creation et consomation de services.pptx
presentation_NET creation et consomation de services.pptxhachchaneemsi
 
M20487 formation-developper-windows-azure-et-les-services-web
M20487 formation-developper-windows-azure-et-les-services-webM20487 formation-developper-windows-azure-et-les-services-web
M20487 formation-developper-windows-azure-et-les-services-webCERTyou Formation
 
Rapport application chat
Rapport application chatRapport application chat
Rapport application chatTbatou sanae
 
TechDays 2010 (CLO305) : Windows Azure App Fabric
TechDays 2010 (CLO305) : Windows Azure App FabricTechDays 2010 (CLO305) : Windows Azure App Fabric
TechDays 2010 (CLO305) : Windows Azure App FabricGeoffrey DANIEL
 
M10557 formation-introduction-au-developpement-web-avec-visual-studio-2010
M10557 formation-introduction-au-developpement-web-avec-visual-studio-2010M10557 formation-introduction-au-developpement-web-avec-visual-studio-2010
M10557 formation-introduction-au-developpement-web-avec-visual-studio-2010CERTyou Formation
 
Authentification par certificat (clear box)
Authentification par certificat (clear box)Authentification par certificat (clear box)
Authentification par certificat (clear box)Ousmane BADJI
 
Configurer ldaps sur un dc (avec une
Configurer ldaps sur un dc (avec uneConfigurer ldaps sur un dc (avec une
Configurer ldaps sur un dc (avec uneNovencia Groupe
 
We601 g formation-acceleration-securisation-et-integration-avec-ibm-websphere...
We601 g formation-acceleration-securisation-et-integration-avec-ibm-websphere...We601 g formation-acceleration-securisation-et-integration-avec-ibm-websphere...
We601 g formation-acceleration-securisation-et-integration-avec-ibm-websphere...CERTyou Formation
 
Waacn formation-windows-azure-applications-cloud-nodejs
Waacn formation-windows-azure-applications-cloud-nodejsWaacn formation-windows-azure-applications-cloud-nodejs
Waacn formation-windows-azure-applications-cloud-nodejsCERTyou Formation
 
Architecture Réseau des clouds privés avec Hyper-V et System Center Virtual M...
Architecture Réseau des clouds privés avec Hyper-V et System Center Virtual M...Architecture Réseau des clouds privés avec Hyper-V et System Center Virtual M...
Architecture Réseau des clouds privés avec Hyper-V et System Center Virtual M...Microsoft Technet France
 
Cas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De SilverlightCas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De SilverlightArnaud Auroux
 
M10750 formation-piloter-et-controler-un-cloud-prive-avec-microsoft-system-ce...
M10750 formation-piloter-et-controler-un-cloud-prive-avec-microsoft-system-ce...M10750 formation-piloter-et-controler-un-cloud-prive-avec-microsoft-system-ce...
M10750 formation-piloter-et-controler-un-cloud-prive-avec-microsoft-system-ce...CERTyou Formation
 
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexesSayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexesSayehHiba1
 

Similaire à Sécurisation des wcf (20)

Déployer une application directement depuis visual studio 2010
Déployer une application directement depuis visual studio 2010Déployer une application directement depuis visual studio 2010
Déployer une application directement depuis visual studio 2010
 
.NET DotNet CF - 3
.NET DotNet CF - 3.NET DotNet CF - 3
.NET DotNet CF - 3
 
eServices-Tp2: bpel
eServices-Tp2: bpeleServices-Tp2: bpel
eServices-Tp2: bpel
 
Utilisation d'une api web avec asp
Utilisation d'une api web avec aspUtilisation d'une api web avec asp
Utilisation d'une api web avec asp
 
presentation_NET creation et consomation de services.pptx
presentation_NET creation et consomation de services.pptxpresentation_NET creation et consomation de services.pptx
presentation_NET creation et consomation de services.pptx
 
M20487 formation-developper-windows-azure-et-les-services-web
M20487 formation-developper-windows-azure-et-les-services-webM20487 formation-developper-windows-azure-et-les-services-web
M20487 formation-developper-windows-azure-et-les-services-web
 
Rapport application chat
Rapport application chatRapport application chat
Rapport application chat
 
Tutoriel web service
Tutoriel  web serviceTutoriel  web service
Tutoriel web service
 
TechDays 2010 (CLO305) : Windows Azure App Fabric
TechDays 2010 (CLO305) : Windows Azure App FabricTechDays 2010 (CLO305) : Windows Azure App Fabric
TechDays 2010 (CLO305) : Windows Azure App Fabric
 
M10557 formation-introduction-au-developpement-web-avec-visual-studio-2010
M10557 formation-introduction-au-developpement-web-avec-visual-studio-2010M10557 formation-introduction-au-developpement-web-avec-visual-studio-2010
M10557 formation-introduction-au-developpement-web-avec-visual-studio-2010
 
Authentification par certificat (clear box)
Authentification par certificat (clear box)Authentification par certificat (clear box)
Authentification par certificat (clear box)
 
[Tuto] Big datatrack : Web Tracker
[Tuto] Big datatrack : Web Tracker[Tuto] Big datatrack : Web Tracker
[Tuto] Big datatrack : Web Tracker
 
Configurer ldaps sur un dc (avec une
Configurer ldaps sur un dc (avec uneConfigurer ldaps sur un dc (avec une
Configurer ldaps sur un dc (avec une
 
We601 g formation-acceleration-securisation-et-integration-avec-ibm-websphere...
We601 g formation-acceleration-securisation-et-integration-avec-ibm-websphere...We601 g formation-acceleration-securisation-et-integration-avec-ibm-websphere...
We601 g formation-acceleration-securisation-et-integration-avec-ibm-websphere...
 
Waacn formation-windows-azure-applications-cloud-nodejs
Waacn formation-windows-azure-applications-cloud-nodejsWaacn formation-windows-azure-applications-cloud-nodejs
Waacn formation-windows-azure-applications-cloud-nodejs
 
Architecture Réseau des clouds privés avec Hyper-V et System Center Virtual M...
Architecture Réseau des clouds privés avec Hyper-V et System Center Virtual M...Architecture Réseau des clouds privés avec Hyper-V et System Center Virtual M...
Architecture Réseau des clouds privés avec Hyper-V et System Center Virtual M...
 
OpenESB et BPEL
OpenESB et BPELOpenESB et BPEL
OpenESB et BPEL
 
Cas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De SilverlightCas Pratique Du Mode DéConnecté De Silverlight
Cas Pratique Du Mode DéConnecté De Silverlight
 
M10750 formation-piloter-et-controler-un-cloud-prive-avec-microsoft-system-ce...
M10750 formation-piloter-et-controler-un-cloud-prive-avec-microsoft-system-ce...M10750 formation-piloter-et-controler-un-cloud-prive-avec-microsoft-system-ce...
M10750 formation-piloter-et-controler-un-cloud-prive-avec-microsoft-system-ce...
 
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexesSayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
Sayeh hiba-karaa-eya-ferjani-maroua-hamzaoui-balkiss-sys-complexes
 

Plus de Novencia Groupe

Datalake de l'idée à la plateforme
Datalake de l'idée à la plateformeDatalake de l'idée à la plateforme
Datalake de l'idée à la plateformeNovencia Groupe
 
Ambient intelligence & bigdata
Ambient intelligence & bigdataAmbient intelligence & bigdata
Ambient intelligence & bigdataNovencia Groupe
 
Workshop Fonctionnel - Mecanisme surveillance unique
Workshop Fonctionnel - Mecanisme surveillance uniqueWorkshop Fonctionnel - Mecanisme surveillance unique
Workshop Fonctionnel - Mecanisme surveillance uniqueNovencia Groupe
 
Workshop Fonctionnel - TITRISATION : LE RETOUR
Workshop Fonctionnel - TITRISATION : LE RETOURWorkshop Fonctionnel - TITRISATION : LE RETOUR
Workshop Fonctionnel - TITRISATION : LE RETOURNovencia Groupe
 
L’approche Big Data en finance de marché 2/2
L’approche Big Data en finance de marché 2/2L’approche Big Data en finance de marché 2/2
L’approche Big Data en finance de marché 2/2Novencia Groupe
 
L’approche Big Data en finance de marché 1/2
L’approche Big Data en finance de marché 1/2L’approche Big Data en finance de marché 1/2
L’approche Big Data en finance de marché 1/2Novencia Groupe
 
Les Acronymes financiers de 2014
Les Acronymes financiers de 2014Les Acronymes financiers de 2014
Les Acronymes financiers de 2014Novencia Groupe
 
FATCA et DODD-FRANK : Deux lois américaines qui s’imposent aux banques europé...
FATCA et DODD-FRANK : Deux lois américaines qui s’imposent aux banques europé...FATCA et DODD-FRANK : Deux lois américaines qui s’imposent aux banques europé...
FATCA et DODD-FRANK : Deux lois américaines qui s’imposent aux banques europé...Novencia Groupe
 
Qualité de code, sonar, la dette
Qualité de code, sonar, la detteQualité de code, sonar, la dette
Qualité de code, sonar, la detteNovencia Groupe
 
Euro II : Nouvelle donne 2012
Euro II : Nouvelle donne 2012Euro II : Nouvelle donne 2012
Euro II : Nouvelle donne 2012Novencia Groupe
 
Les systèmes de compensation
Les systèmes de compensationLes systèmes de compensation
Les systèmes de compensationNovencia Groupe
 
Présentation des marché de capitaux
Présentation des marché de capitauxPrésentation des marché de capitaux
Présentation des marché de capitauxNovencia Groupe
 
Nouveautés disponibles dans asp
Nouveautés disponibles dans aspNouveautés disponibles dans asp
Nouveautés disponibles dans aspNovencia Groupe
 
Introduction à la finance de marché
Introduction à la finance de marchéIntroduction à la finance de marché
Introduction à la finance de marchéNovencia Groupe
 
Mécanisme de planification de tâches
Mécanisme de planification de tâchesMécanisme de planification de tâches
Mécanisme de planification de tâchesNovencia Groupe
 

Plus de Novencia Groupe (20)

Datalake de l'idée à la plateforme
Datalake de l'idée à la plateformeDatalake de l'idée à la plateforme
Datalake de l'idée à la plateforme
 
Ambient intelligence & bigdata
Ambient intelligence & bigdataAmbient intelligence & bigdata
Ambient intelligence & bigdata
 
Workshop Fonctionnel - Mecanisme surveillance unique
Workshop Fonctionnel - Mecanisme surveillance uniqueWorkshop Fonctionnel - Mecanisme surveillance unique
Workshop Fonctionnel - Mecanisme surveillance unique
 
Workshop Fonctionnel - TITRISATION : LE RETOUR
Workshop Fonctionnel - TITRISATION : LE RETOURWorkshop Fonctionnel - TITRISATION : LE RETOUR
Workshop Fonctionnel - TITRISATION : LE RETOUR
 
L’approche Big Data en finance de marché 2/2
L’approche Big Data en finance de marché 2/2L’approche Big Data en finance de marché 2/2
L’approche Big Data en finance de marché 2/2
 
L’approche Big Data en finance de marché 1/2
L’approche Big Data en finance de marché 1/2L’approche Big Data en finance de marché 1/2
L’approche Big Data en finance de marché 1/2
 
Les Acronymes financiers de 2014
Les Acronymes financiers de 2014Les Acronymes financiers de 2014
Les Acronymes financiers de 2014
 
FATCA et DODD-FRANK : Deux lois américaines qui s’imposent aux banques europé...
FATCA et DODD-FRANK : Deux lois américaines qui s’imposent aux banques europé...FATCA et DODD-FRANK : Deux lois américaines qui s’imposent aux banques europé...
FATCA et DODD-FRANK : Deux lois américaines qui s’imposent aux banques europé...
 
Qualité de code, sonar, la dette
Qualité de code, sonar, la detteQualité de code, sonar, la dette
Qualité de code, sonar, la dette
 
Sonar
Sonar Sonar
Sonar
 
Visual studio 2012
Visual studio 2012Visual studio 2012
Visual studio 2012
 
Euro II : Nouvelle donne 2012
Euro II : Nouvelle donne 2012Euro II : Nouvelle donne 2012
Euro II : Nouvelle donne 2012
 
Les systèmes de compensation
Les systèmes de compensationLes systèmes de compensation
Les systèmes de compensation
 
Présentation des marché de capitaux
Présentation des marché de capitauxPrésentation des marché de capitaux
Présentation des marché de capitaux
 
Mobile development
Mobile developmentMobile development
Mobile development
 
Nouveautés disponibles dans asp
Nouveautés disponibles dans aspNouveautés disponibles dans asp
Nouveautés disponibles dans asp
 
La crise de l'euro
La crise de l'euroLa crise de l'euro
La crise de l'euro
 
Introduction à la finance de marché
Introduction à la finance de marchéIntroduction à la finance de marché
Introduction à la finance de marché
 
Mécanisme de planification de tâches
Mécanisme de planification de tâchesMécanisme de planification de tâches
Mécanisme de planification de tâches
 
Linq to Xml
Linq to Xml Linq to Xml
Linq to Xml
 

Sécurisation des wcf

  • 1. Sécurisation des WCF Auteur: Marc-Aurèle KOUAIK
  • 2. SOMMAIRE 1. Présentation 2. Mise en place d’un service Web WCF 3. Paramétrage basique du service WCF 4. Création du client 5. Appel des méthodes du service Web 6. Paramétrage du client 7. Test du service Web 8. Gestion de la sécurité du service Web 8.1 Paramétrage de l’authentification 8.2 Paramétrage des autorisations 9. Conclusion 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 2
  • 3. 2. Présentation WCF est à la nouvelle norme Microsoft pour tous types de services, qu’il s’agisse de service Windows ou de service Web. Tous répondent à cette normalisation ce qui simplifie la manière de communiquer entre les différents composants d’une solution, ou même avec les applications créées par d’autres collaborateurs. La communication des services WCF est basée sur le protocole SOAP. La sécurité de ces services consiste à leur inclure l’authentification, l’encryptage des données et l’assurance de l’intégrité des données. Nous allons voir comment traiter ces points par un exemple concret. 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 3
  • 4. 2.Mise en place d’un service Web WCF Création d’un nouveau projet « Application du service WCF ». Par défaut, nous voyons bien que Visual Studio a créé un service Service1, son interface IService1 servant de contrat pour communiquer, et a créé le fichier de configuration (ici Web.config, car il s’agit d’une application de service destiné à être hébergée sous IIS, c'est-à-dire un service Web). J’aurais aussi pu créer un projet de type « Bibliothèque de service » pour générer un service Windows. J’aurais alors eu un projet contenant une classe Service1, son interface IService1 et un fichier de configuration app.config. 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 4
  • 5. 2.Mise en place d’un service Web WCF (suite) Cependant je vais rester sur le service Web pour effectuer ma démonstration. Le service contient aussi par défaut deux méthodes d’appel. La première public string GetData(int value) permet de récupérer les données à partir d’un entier passé en paramètre. La seconde public CompositeType GetDataUsingDataContract(CompositeType composite) permet de récupérer les données en passant en paramètre un type complexe, et en retournant ce même objet mis à jour. Le fichier d’interface contient l’interface présentant les méthodes exposées par le service. Elle a donc pour attribut [ServiceContract] et les méthodes qu’elle expose ont pour attribut [OperationContract]. Au niveau du type complexe utilisé pour faire passer les données dans la méthode GetDataUsingDataContract, celui-ci est défini dans une classe qui a pour attribut [DataContract] et chacun des membres qu’elle expose ont pour attribut [DataMember]. 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 5
  • 6. 3.Paramétrage basique du service WCF Par défaut, Visual Studio laisse complètement ouvert l’accès au service. Pour permettre plus de précision dans la configuration, je conseille de configurer les points d’entrée en spécifiant une configuration de binding et de behaviour pour le service et pour les endpoints. 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 6
  • 7. 3.Paramétrage basique du service WCF (suite) La configuration des bindings peut aussi être personnalisée. On pourra alors créer un bloc de configuration de bindings comme il suit : Il faudra alors lier le point d’entrée à cette configuration : 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 7
  • 8. 4.Création du client Pour créer le client, j’utilise l’utilitaire svdutil.exe, qui va générer le client. Pour pouvoir l’utiliser, le service doit être en fonction. Je lance donc l’application puis l’utilitaire avec la ligne de commande suivante : svcutil.exe http://localhost:3312/Service1.svc?wsdl L’utilitaire me créé un fichier Service1.cs qui correspond à ma classe client du service. Cette classe contient tout le nécessaire pour faire appel au service. 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 8
  • 9. 5. Appel des méthodes du service Web Pour faire appel aux méthodes du service, je créé une application cliente (de type console par exemple). J’ajoute à ce projet la classe client que je viens de générer. Dans la méthode Main de la classe Program, je fais appel aux méthodes du service. 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 9
  • 10. 6. Paramétrage du client J’effectue le paramétrage du client en ajoutant un fichier app.config. Dans la configuration j’ajoute les tags relatifs à la configuration du client, dans lesquels je configure les points d’entrée au service. Pour pouvoir configurer le port d’écoute, je force Visual Studio à lancer le service web (hébergé sous IIS) avec un port bien précis. J’effectue ceci dans les propriétés du projet de site web. 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 10
  • 11. 6. Paramétrage du client (suite) Voici donc la configuration du client : 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 11
  • 12. 7. Test du service Web Pour tester l’appel au service, je démarre les deux projets en simultanés L’ application Console devra attendre que le service soit disponible. Il faut donc régler l’ordre d’exécution des projets. Nous pouvons alors tester la solution. Le rendu montre bien que le client appelle bien le service qui modifie les données envoyées avant de les retourner. Les deux méthodes sont appelées sans problème. 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 12
  • 13. 8. Gestion de la sécurité du service Web 8.1 Paramétrage de l’authentification L’authentification est gérée par le mode de sécurité du binding. Il existe trois possibilités pour paramétrer le mode de sécurité du binding : - le mode « Transport », qui permet une connexion en secure socket (SSL) et nécessite l’authentification à l’appel. Ce mode est possible pour tous les bindings. - Le mode « Message », qui nécessite que les données d’authentification et de sécurisation soient présentes dans les entêtes de chaque message. Il ne peut fonctionner que pour une communication de point à point (sans intermédiaire). N’est pas permis pour le WebHttpBinding. - Le mode « TransportWithMessageCredential » utilise les fonctionnalités de SSL pour la sécurité de transport des messages, et la méthode se sécurité du mode message pour chaque message. Pour activer le mode « Transport » il faut configurer l’hôte avec un certificat SSL (en l’occurrence pour un service Web, le paramétrage est à effectuer sous IIS.). Une fois le service sous HTTPS, il faut paramétrer le mode de sécurité du binding de la manière suivante pour le serveur et pour le client : Pour travailler sous Visual Studio, Microsoft a permis un mode permettant de gérer l’authentification comme si l’on était en HTTPS, mais en restant en HTTP. La configuration utilisée est : 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 13
  • 14. 8. Gestion de la sécurité du service Web (suite) 8.1 Paramétrage de l’authentification (suite) Par la suite, le type d’authentification est défini dans le tag <transport>, comme par exemple : Pour un service Web (webHttpBinding) utilisant le mode de sécurité « Transport », les différents types d’authentification sont : - None : désactive l’authentification. - Basic : le client est authentifié avec un login et mot de passe. Il n’y a pas de cryptage des données avant transfert. - Digest : Similaire à l’authentification basique sauf que le login et le mot de passe sont cryptés par une fonction de hachage avant d’être transmis, ce qui permet de ne pas les voir en clair. - Ntlm : force l’authentification NTLM - Windows : utilise l’authentification utilisée sur le serveur Windows (Active directory ou NTLM). - Certificate : le client doit présenter un certificat X.509 que le service valide. Pour les autres types de binding, notament ceux basés sur le mode de sécurité « Message », les types d’authentification peuvent aussi être : - IssuedToken : le client et le service dépendent d’un service de token sécurisés STS comme Microsoft Windows CardSpace. - UserName : le client est authentifié par nom d’utilisateur et mot de passe. 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 14
  • 15. 8. Gestion de la sécurité du service Web (suite) 8.2 Paramétrage des autorisations Pour faire passer l’authentification Windows, il faut modifier la configuration et ajouter le tag suivant dans <system.serviceModel> : Pour pouvoir l’intercepter, la classe du service doit paramétrer la compatibilité ASPNET, en positionnant en entête de la classe : Cette classe est dans l’espace de nom System.ServiceModel.Activation. Une fois ce paramétrage effectué, il est alors possible d’atteindre le contexte HTTP du service Web. Dans le contexte, il est possible de récupérer l’identité de l’utilisateur. J’ai donc modifié la requête GetData de manière à récupérer et retourner les données de l’utilisateur, et vérifier que l’utilisateur a le rôle lui donnant accès aux données du service. 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 15
  • 16. 8. Gestion de la sécurité du service Web (suite) 8.2 Paramétrage des autorisations (suite) Une fois ce paramétrage effectué, il est alors possible d’atteindre le contexte HTTP du service Web. Dans le contexte, il est possible de récupérer l’identité de l’utilisateur. J’ai donc modifié la requête GetData de manière à récupérer et retourner les données de l’utilisateur, et vérifier que l’utilisateur a le rôle lui donnant accès aux données du service. 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 16
  • 17. 8. Gestion de la sécurité du service Web (suite) 8.2 Paramétrage des autorisations (suite) Dans le code, j’ai vérifié si l’utilisateur avait le rôle « AyandDroitAuService ». Ce rôle doit être défini dans les rôles dans le serveur Windows hébergeant le service web, et l’utilisateur doit être connu de ce serveur. De plus cet utilisateur doit avoir ce rôle dans le serveur pour pouvoir accéder à la méthode GetData. Le résultat obtenu montre qu’en l’occurrence l’utilisateur n’a pas les droits pour utiliser la méthode GetData. 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 17
  • 18. 9. Conclusion WCF permet assez facilement de créer des services sécurisés. Il est possible de définir tous les paramètres au niveau de la configuration. Il est aussi possible de faire de même dans le code. Personnellement, je préfère le paramétrage par le biais de la configuration, car cela permet une plus grande souplesse en cas de migration ou de changement de stratégie. Mon exemple est basé sur un service Web, mais je rappelle qu’il est possible de faire de même avec un service Windows. Le service Windows a de plus l’avantage de ne pas être dépendant du protocole http, ce qui permet davantage de possibilités de modes de communication et donc davantage de possibilités pour paramétrer la sécurité. 19/01/2012 Groupe NOVENCIA - 25 Rue de Maubeuge 75009 PARIS - Tél. : 01 44 63 53 13 - Fax : 01 44 63 53 14 - www.novencia.com - contact@novencia.com 18