Я пытаюсь использовать клиентский веб-сервис с использованием 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 (без изменения издателем)? Если да, какие изменения мне нужно внести в мою конфигурацию?
Отредактировано для уточнения вопроса.