2013-09-30 20 views
8

Nel mio servizio WCF sto cercando di inviare dati al client usando JSON su una connessione SSL. Sono stato in grado di proteggere l'origine del database OData sul mio client utilizzando wsHttpBinding con una modalità di sicurezza di Transport. Perché lo webHttpBinding non è in grado di fare lo stesso per utilizzare SSL? Come configurare un endpoint che deve utilizzare JSON per utilizzare anche una connessione SSL?Come proteggere webHttpBinding?

In sostanza, qual è la differenza tra webHttpBinding e wsHttpBinding?

<bindings> 
    <wsHttpBinding> 
    <binding name="TransportSecurity"> 
     <security mode="Transport"> 
     <transport clientCredentialType="None" /> 
     </security> 
    </binding> 
    </wsHttpBinding> 
</bindings> 

<behaviors> 
    <serviceBehaviors> 
    <behavior name="ServiceBehavior"> 
     <serviceMetadata httpsGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 
    </serviceBehaviors> 

    <endpointBehaviors> 
    <behavior name="EndpBehavior"> 
     <webHttp /> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 

<services> 
    <service behaviorConfiguration="ServiceBehavior" name="DataService4.DataService"> 

    <endpoint address="" binding="webHttpBinding" contract="DataService4.IService" bindingConfiguration="TransportSecurity" behaviorConfiguration="EndpBehavior" /> 

    <endpoint contract="IMetadataExchange" binding="mexHttpsBinding" address="mex" /> 
    </service> 
</services> 

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> 

risposta

12

penso che questo articolo risolverà il vostro problema. Creating a WCF RESTful Service And Secure It Using HTTPS Over SSL

+0

Il collegamento è interrotto. Questo è il motivo per cui le risposte al solo collegamento non devono essere considerate come una risposta. – Ashkan

+0

Il collegamento non è rotto, c'era qualche problema con il mio browser che mostrava 404 pagine non trovate. Comunque penso che sia meglio includere un riassunto dell'articolo nella risposta, come si dice in SO come rispondere alla pagina 'Sempre citare la parte più rilevante di un link importante, nel caso in cui il sito target non sia raggiungibile o sia permanentemente offline. Grazie. – Ashkan

8

La parte pertinente http://www.allenconway.net/2012/05/creating-wcf-restful-service-and-secure.html è questo:

<bindings> 
    <webHttpBinding> 
    <binding> 
     <security mode="Transport" /> 
    </binding> 
    </webHttpBinding> 
</bindings> 

ma anche rimuovere esporre metadati se desiderato.

i dettagli sono documentati in MSDN qui: https://msdn.microsoft.com/en-us/library/bb924478(v=vs.110).aspx

le parti pertinenti sono:

Transport Security è fornita tramite HTTPS. Il servizio deve essere configurato con certificati SSL. Il messaggio è interamente protetto tramite HTTPS e il servizio è autenticato dal client utilizzando il certificato SSL del servizio . L'autenticazione del client è controllata tramite l'attributo ClientCredentialType dello transport of webHttpBinding.