Использование веб-службы HTTPS с использованием WCF - PullRequest
2 голосов
/ 12 апреля 2011

Я пытаюсь использовать клиентский веб-сервис с использованием WCF. Веб-служба клиента выполняется по протоколу HTTPS, и я могу использовать его, используя следующую привязку:

<bindings>
  <basicHttpBinding>
    <binding name="PurchaseOrderSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
        receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
        bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
        maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
        messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
        useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
          maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="Transport" />
    </binding>
  </basicHttpBinding>
</bindings>

Однако наша служба безопасности сказала мне, что мне нужно использовать Message или TransportWithMessageCredential, потому что Fortify 360 жалуется, что Transport слишком слабая защита.

Когда я пытаюсь Meesage, я получаю эту ошибку:

System.InvalidOperationException: BasicHttp binding requires that 
BasicHttpBinding.Security.Message.ClientCredentialType be equivalent to the 
BasicHttpMessageCredentialType.Certificate credential type for secure messages. Select 
Transport or TransportWithMessageCredential security for UserName credentials.

И с TransportWithMessageCredential я получаю следующую ошибку:

System.InvalidOperationException: The username is not provided. Specify username in 
ClientCredentials.

У меня нет имени пользователя / пароля (я могу подключиться к нему в моем браузере), поэтому мой вопрос:

Могу ли я использовать Message или TransportWithMessageCredentials при использовании существующей веб-службы HTTPS (без изменения издателем)? Если да, какие изменения мне нужно внести в мою конфигурацию?

Отредактировано для уточнения вопроса.

Ответы [ 3 ]

2 голосов
/ 12 апреля 2011

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

Безопасность транспорта не "менее" безопасна, чем безопасность на уровне сообщений. Уровень безопасности сообщения означает, что содержимое мыльного сообщения зашифровано. Это позволяет вам сохранять или передавать сообщение открытым текстом и при этом быть уверенным, что никто не сможет взглянуть на сообщение. Если все, что вы делаете, это общение между вашей системой и поставщиком через Интернет, то безопасность на уровне транспорта и сообщений одинаково безопасна.

1 голос
/ 18 мая 2011

У вас нет какой-то политики исключений, с помощью которой вы могли бы принять к сведению, почему невозможно выполнить лучшую рекомендацию Fortify?

Я бы подумал, что лучшее, что вы можете сделать, - это связаться с вашим поставщиком веб-услуг и попросить улучшения для поддержки правил транспорта Fortify.

Также: я подозреваю, что вы говорите, что веб-браузер соединяет вас без учетных данных. Это, вероятно, означает, что система, к которой вы подключаетесь, немного сложнее, чем ваши предположения. разные соединения или разные URL могут обслуживаться разными серверами (SSO?) или могут применяться разные политики безопасности (сертификат клиента и т. д.)

1 голос
/ 12 апреля 2011

basicHttpBinding поддерживает только безопасность имени пользователя и сообщения сертификата. Поэтому, если у вас нет механизма для проверки учетных данных пользователя в вашей системе, можно использовать сертификаты.

<security mode="TransportWithMessageCredential">
    ...
    <message clientCredentialType="UserName"/>
</security>

Другой вариант - использовать другую привязку, например, wsHttpBinding, в которой по умолчанию включена защита сообщений, а также поддерживаются типы учетных данных Windows и выданных токенов. То, что вы реализуете, во многом зависит от ваших требований к реализации и среды.

...