Как защитить веб-службу WCF с поддержкой Silverlight с помощью SSL? - PullRequest
7 голосов
/ 09 мая 2009

Как защитить веб-службу WCF с поддержкой Silverlight с помощью SSL? Я попытался настроить его аналогично обычному сервису WCF, защищенному с помощью SSL, но, похоже, он не работает. Что вы устанавливаете в Web.Config , и что вы устанавливаете в ServiceReferences.ClientConfig Silverlight ?

Я заметил, что в файле ServiceReferences.ClientConfig клиентского приложения Silverlight тег «Binding» допускает только basicHttpBinding и NOT wsHttpBinding. Означает ли это, что вы не можете защитить службу WCF с поддержкой Silverlight? Если да, то есть ли более эффективные подходы к его обеспечению?

Ответы [ 4 ]

11 голосов
/ 12 мая 2009

Есть три ключевых места, которые я настраиваю для использования https в своих собственных приложениях.

Web.config

В теге поведения включите эту строку:

<serviceMetadata httpsGetEnabled="true"/>

Для конечной точки MEX убедитесь, что вы используете протокол https:

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

Создание пользовательской привязки. Важной частью является транспортная безопасность:

  <basicHttpBinding>
    <binding name="myServicesBinding">
      <security mode="Transport"/>
    </binding>
  </basicHttpBinding>

Вы также можете включить обычные средства авторизации:

<authorization>
  <allow users="?"/>
  <deny users="*"/>
</authorization>

Silverlight

На стороне Silverlight либо укажите ServiceReference на теперь защищенную службу, либо настройте соединения вручную в коде. файл ServiceReferences.ClientConfig должен содержать элементы безопасности:

<security mode="Transport"/>

И версия кода выглядит так:

BasicHttpBinding b = new BasicHttpBinding(BasicHttpSecurityMode.Transport);

Возможно, есть более сложные вещи, которые можно сделать, но этого должно быть достаточно для большинства людей.

3 голосов
/ 25 сентября 2011

Чтобы создать веб-службу WCF с поддержкой Silverlight с использованием SSL, необходимо выполнить следующие действия:

  1. Создание стандартной веб-службы WCF с поддержкой Silverlight с использованием Visual Studio 2010
  2. Изменить 3 места файла webconfig.xml:

    а. В serviceMetadata измените httpGetEnabled на httpsGetEnabled следующим образом:

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

    б. В обязательном порядке измените httpTransport на httpsTransport:

    <bindings>
      <customBinding>
        <binding name="Project.Web.YourService.customBinding0">
          <binaryMessageEncoding/>
          <httpsTransport/>
        </binding>
      </customBinding>
    </bindings>
    

    с. в изменении конечной точки привязка = "mexHttpBinding" к привязке = "mexHttpsBinding":

    <service name="Project.Web.YourService.YourService">
      <endpoint address="" binding="customBinding" bindingConfiguration="Project.Web.YourService.customBinding0"
      contract="Project.Web.YourService.YourService" />
      <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
    </service>
    
  3. Не использовать ServiceReferences.ClientConfig. Создайте все в коде позади - его легко развернуть на сервере:

    CustomBinding binding = new CustomBinding(new BinaryMessageEncodingBindingElement(), new HttpsTransportBindingElement());         
    YourServiceReference.YourServiceClient service = new YourServiceReference.YourServiceClient (binding, new EndpointAddress(new Uri( "https:yourhostname/YourService.svc").AbsoluteUri));        
    service.YourMethodCompleted += new EventHandler<YourServiceReference.YourMethodCompleted EventArgs>(service_YourMethodCompleted );
    service.YourMethodAsync();
    
3 голосов
/ 09 мая 2009

в файле ServiceReferences.ClientConfig из клиентское приложение Silverlight, которое позволяет только тег «Binding» basicHttpBinding и НЕ wsHttpBinding. Означает ли это, что вы не можете защитить Silverlight-Enabled WCF Сервис?

Нет, это не значит. Вы можете иметь basicHttpBinding и по-прежнему назначать ему защиту транспортного уровня (HTTPS с SSL). Это не должно быть проблемой.

Марк

PS: Многие из этих ссылок дают вам более глубокое понимание и общеизвестное "АГА!" : -)

0 голосов
/ 09 мая 2009

WS * не поддерживается в Silverlight - в основном измените URL в конфигурации клиента на https: // url - это все, что вы можете сделать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...