2012-05-21 2 views
1

Мне поручено разработать приложение Silverlight, которое должно потреблять службу WCF. Служба только открыла конечную точку, используя WsHttpBinding.Как защитить соединение с сервисом WCF? Silverlight потребляет услугу WCF с WsHttpBinding.

Как я понял, эту услугу нельзя использовать в приложении silverlight (требуется ли поддержка WsHttpBinding для поддержки специальной операционной системы?).

Каждый вызов службы имеет учетные данные пользователя как параметры в нем.

Это как конфигурация для сгенерированных службы ищет .Net 4 приложения:

<system.serviceModel> 
    <bindings> 
     <wsHttpBinding> 
      <binding name="WSHttpBinding_IScheduleService" closeTimeout="00:01:00" 
       openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
       bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard" 
       maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
       messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" 
       allowCookies="false"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
        maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
       <reliableSession ordered="true" inactivityTimeout="00:10:00" 
        enabled="false" /> 
       <security mode="Transport"> 
        <transport clientCredentialType="None" proxyCredentialType="None" 
         realm="" /> 
        <message clientCredentialType="Windows" negotiateServiceCredential="true" /> 
       </security> 
      </binding> 
     </wsHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="blahblah/Service.svc/ws" 
      binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IScheduleService" 
      contract="ScheduleService.IScheduleService" name="WSHttpBinding_IScheduleService"> 
      <identity> 
       <dns value="localhost" /> 
      </identity> 
     </endpoint> 
    </client> 
</system.serviceModel> 

Извините за длинное вступление, и есть вопрос.

Что общего в мире Silverlight, чтобы защитить соединение с сервисом WCF? Как изменить услугу, чтобы ее можно было использовать клиентом silverlight?

ответ

2

Наиболее распространенным подходом является использование транспортной безопасности (ssl) - как вы это делаете. Единственная проблема здесь может заключаться в том, что wshttpbinding ожидает от клиентского мыльного сообщения содержать заголовки ws-адресации (проверьте это с помощью регистрации fiddler или wcf), которые silverlight может не поддерживать.

Я бы сказал - если вы можете изменить сервис на basicHttpBinding, это лучший вариант. В противном случае вы все равно можете это сделать, но вам нужно будет вручную вставлять заголовки в сообщение с мылом. напишите рабочий мыльный клиент (winforms) и посмотрите, как выглядит мыло, которое он отправляет. затем используйте message inspector on silverlight, чтобы добавить его.

Смежные вопросы