WCF BasicHttpBinding + UserNamePasswordValidator + x.509 - PullRequest
0 голосов
/ 28 апреля 2011

Я настроил службу WCF для клиента, используя wsHttpBinding с пользовательской проверкой имени пользователя, x.509, но без SSL

Они используют PHP и совершенно не могут пройти мимо безопасности WS, поэтому наше решение должно заключаться в добавлении еще одной привязки basichttp. Но когда я делаю это, кажется, что требуется SSL. Мое требование абсолютно НЕ использовать SSL.

Моя работающая привязка wshttp выглядит следующим образом:

<wsHttpBinding>
    <binding name="WSHttpBinding_ISearchService" closeTimeout="00:10:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" bypassProxyOnLocal="true" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
      <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
      <security mode="Message"  >
        <message clientCredentialType="UserName"/>
      </security>
    </binding>

<serviceBehaviors>
    <behavior name="My.Services.SearchServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />

      <dataContractSerializer maxItemsInObjectGraph="2147483647" />

      <serviceCredentials>
        <serviceCertificate findValue="01000000000xxxxxxxxx" storeLocation="LocalMachine"
                                 storeName="My" x509FindType="FindBySerialNumber" />
        <userNameAuthentication userNamePasswordValidationMode="Custom"
         customUserNamePasswordValidatorType="My.Services.UserNamePassValidator, SearchService" />
      </serviceCredentials>

    </behavior>
  </serviceBehaviors>

Возможна ли такая же точная конфигурация при использовании basichttpbinding без SSL?

1 Ответ

0 голосов
/ 28 апреля 2011

BasicHttpBinding требует, чтобы BasicHttpBinding.Security.Message.ClientCredentialType был эквивалентен типу удостоверения BasicHttpMessageCredentialType.Certificate для режима безопасности «Сообщение». Итак, во-первых, вы не можете использовать clientCredentialType = "UserName".
Вам необходимо иметь сертификат клиента для шифрования сообщения и передачи. Примеры WCF SDK реализуют один такой сценарий, отметьте здесь

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