0 votes

Configuration de la sécurité au niveau du transport sur le service WCF webHttp

J'essaie de définir la sécurité au niveau du transport sur un service WCF lié par webHttp. Ma configuration actuelle ressemble à ceci

 <system.serviceModel>
<client>
  <endpoint binding="webHttpBinding" bindingConfiguration="webHttp"
    contract="PrimeStreamInfoServices.IService1" name="Client" />
</client>
<bindings>
<webHttpBinding>
  <binding name="webHttp" maxBufferPoolSize="1500000"  maxReceivedMessageSize="1500000"  maxBufferSize="1500000">
  <security mode="Transport">
      <transport clientCredentialType="None"

            proxyCredentialType="None"
            realm="string" />
  </security>
  </binding>

</webHttpBinding>
</bindings>
<services>

  <service name="PrimeStreamInfoServices.Service1" behaviorConfiguration="PrimeStreamInfoServices.Service1Behavior">
    <!-- Service Endpoints -->
    <endpoint address="" binding="webHttpBinding" bindingConfiguration="webHttp" contract="PrimeStreamInfoServices.IService1">
      <!-- 
          Upon deployment, the following identity element should be removed or replaced to reflect the 
          identity under which the deployed service runs.  If removed, WCF will infer an appropriate identity 
          automatically.
      -->
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior name="PrimeStreamInfoServices.Service1Behavior">

      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<diagnostics>

  <messageLogging logMalformedMessages="true"  logMessagesAtServiceLevel="true"
    logMessagesAtTransportLevel="true" />

</diagnostics>

Cependant, lorsque je lance mon service, j'obtiens une exception : Impossible de trouver une adresse de base correspondant au schéma https pour le point de terminaison avec le binding WebHttpBinding. Les schémas d'adresses de base enregistrés sont [http].

Je sais qu'il me manque quelque chose, et j'ai essayé plusieurs choses, mais je n'arrive pas à comprendre, quelqu'un a-t-il une idée de ce que je dois faire ?

0voto

blowdart Points 28735

Oui - passez à HTTPS, avec un certificat approprié. La sécurité du transport, dans le cas de HTTP, est assurée par un canal SSL. Vous ne pouvez pas avoir la sécurité de transport WS* sur un simple HTTPS.

0voto

Shiraz Bhaiji Points 34901

Ignorez ma réponse précédente, je pensais à wsHttpBinding et non à webHttpBinding.

C'est l'adresse que vous utilisez pour appeler le service qui doit commencer par https.

https://machineName/ServiceName

0voto

marc_s Points 321990

Pouvez-vous essayer d'ajouter une adresse de base (à l'intérieur de l'adresse de base) ? <host> de la configuration de votre service) qui est https ? Ajoutez-vous une (ou plusieurs) adresse(s) de base dans le code ?

<service name="PrimeStreamInfoServices.Service1" 
         behaviorConfiguration="PrimeStreamInfoServices.Service1Behavior">
   <host>
      <baseAddresses>
         <add baseAddress="https://localhost:8080/YourService.svc" />
      </baseAddresses>
   </host>
   <!-- Service Endpoints -->
   <endpoint ......
</service>

Je ne suis pas sûr à 100% que cela fonctionne avec le webHttpBinding, mais faites un essai !

Marc

0voto

tomasr Points 9990

Rappelez-vous qu'en plus de la bonne configuration WCF, vous devez également configurer la propriété IIS pour activer SSL sur elle (y compris la définition du bon certificat X.509 pour SSL). Le site docs ont des informations décentes sur la façon de le faire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X