none
Securité et BasicHttpBinding RRS feed

  • Question

  • Bonjour :)

    Je me pose une question sur WCF :

    J'aimerais permettre aux utilisateurs de choisir entre http et https.
    J'ai créé deux endpoints différents : BasicHttpBinding avec Transport=Certificate, et CustomBinding pour le http de base. (=> client Windows Phone donc pas de wsBinding).

    Pour utiliser SSL, je dois activer dans IIS > Paramètres SSL > Exiger SSL, sans quoi je ne peux pas accéder à la version sécurisée de mon service.
    Par contre, du coup je je peux plus naviguer en http de base. Et si je décoche Exiger SSL, je ne peux plus naviguer en https.

    C'est vraiment étrange, ne peut on pas décocher Exiger SSL et gérer quand même https ? J'ai oublié quelque chose dans ma configuration ?

    • Modifié Alexis MATHIEU lundi 26 mars 2012 15:54 [J'ai édité car j'ai fait une erreur :)]
    lundi 26 mars 2012 15:34

Toutes les réponses

  • Bonjour,

    Normalement, si vous voulez héberger un service WCF en HTTP et HTTPS il faut décocher "Exiger SSL" dans IIS (C'est WCF qui prendra la main).

    Si vous hébergez un site web en HTTP et HTTPS avec votre service WCF, dans ce cas créez un nouveau site web IIS qui hébergera uniquement vos services WCF (Exiger SSL décoché).

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

    • Proposé comme réponse SOW Bano mercredi 4 juillet 2012 09:35
    mardi 27 mars 2012 05:55
    Modérateur
  • Bonjour et merci de votre réponse !

    Je souhaite héberger sur IIS un service WCF en http et https.

    Si je décoche "Exiger SSL", j'ai une erreur lorsque j'essaie d'ajouter la référence de ce service à mon projet : "Les paramètres SSL pour le service 'SslRequireCert' ne correspondent pas à ceux du 'None' IIS.

    Si je décoche "Exiger SSL" et acceptant les certificats clients, j'ai la même erreur mais avec 'SslNegociateCert' IIS.

    Si je coche 'Exiger SSL', j'ai toujours "la demande HTTP a été interdite avec le schéma d'authentification du client 'Anonymous'.

    Côté web.config du service WCF, j'ai spécifié notamment le behavior suivant pour mon service

    <behaviors>
         <serviceBehaviors>
           <behavior name="">
               <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />

              <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
          </serviceBehaviors>
     </behaviors>

    et le security mode suivant pour mon binding https.

    <security mode="Transport">
                <transport clientCredentialType="Certificate" />
    </security>

    J'ai choisi celui-ci, car sous IIS, pour activer la liaison https, on doit spécifier un certificat.

    Si je remplace mon clientCredentialType par "None", l'ajout de la référence fonctionne. Mais du coup, SSL est toujours actif ?

    Bizarrement, si je configure côté client mon serviceClient avec l'adresse https://monservice.svc/https ça ne marche pas

    par contre si je le configure avec http://monservice.svc/https il trouve le endpoint.

    Je trouve ça vraiment étrange, pourtant quand le ServiceReferences.ClientConfig est généré, le endpoint HTTPS est bien https://monservice.svc/https...!

    Si je configure avec l'adresse HTTP qui pointe sur le endpoint qui a le SecurityMode sur Transport, SSL est toujours actif ?


    mardi 27 mars 2012 08:43
  • Bonjour,

    C'est toujours pas évident les configs de securité service wcf .Mais tu as verfifier  cet param dan ta conf

    <serviceMetadata httpGetEnabled="True"/>

    to:

    <serviceMetadata httpsGetEnabled="True"/>

    Et aussi le name de la Behavior pour le BehaviorConfigurationName

    Bonne Chance


    So B


    • Modifié SOW Bano mercredi 4 avril 2012 14:29
    mercredi 4 avril 2012 13:50