2013-09-30 5 views
8

W mojej usłudze WCF próbuję wysyłać dane do klienta za pomocą JSON przez połączenie SSL. Udało mi się zabezpieczyć źródło bazy danych OData mojemu klientowi przy użyciu wsHttpBinding z trybem zabezpieczeń Transport. Dlaczego webHttpBinding nie może zrobić tego samego, aby korzystać z SSL? Jak skonfigurować punkt końcowy, który musi używać JSON również do korzystania z połączenia SSL?Jak zabezpieczyć webHttpBinding?

Zasadniczo jaka jest różnica między webHttpBinding a 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" /> 

Odpowiedz

12

Myślę, że ten artykuł będzie rozwiązać problem. Creating a WCF RESTful Service And Secure It Using HTTPS Over SSL

+0

Link jest uszkodzony. Dlatego właśnie odpowiedzi typu "link only" nie powinny być traktowane jako odpowiedź. – Ashkan

+0

Łącze nie jest zepsute, wystąpił problem z moją przeglądarką, na której wyświetlono 404 nie znalezioną stronę. W każdym razie myślę, że najlepiej jest dołączyć podsumowanie artykułu w odpowiedzi, jak to jest napisane w odpowiedzi na pytanie, jak odpowiedzieć na stronę "Zawsze cytuj najważniejszą część ważnego linku, na wypadek, gdyby strona docelowa była nieosiągalna lub stała na stałe w trybie offline". Dzięki. – Ashkan

8

Odpowiednie części z http://www.allenconway.net/2012/05/creating-wcf-restful-service-and-secure.html to:

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

ale również usuwać odsłaniając metadanych w razie potrzeby.

szczegóły są udokumentowane w MSDN tutaj: https://msdn.microsoft.com/en-us/library/bb924478(v=vs.110).aspx

odpowiednie części są:

Bezpieczeństwa Transportu jest za pomocą protokołu HTTPS. Usługa musi być skonfigurowana z certyfikatami SSL. Komunikat jest całkowicie zabezpieczony przy użyciu protokołu HTTPS, a usługa jest uwierzytelniana przez klienta przy użyciu certyfikatu SSL usługi . Uwierzytelnianie klienta jest kontrolowane za pomocą atrybutu ClientCredentialType obiektu transport of webHttpBinding.