Подтвердить что ты не робот

SoapUI с безопасностью сообщений WCF

Я пытаюсь настроить мою службу WCF (.NET 4.0), чтобы ее можно было протестировать с помощью soapUI. Я использую wsHttpBinding с безопасностью сообщений. Моя цель состоит в том, чтобы разоблачить службу на публичной конечной точке тестирования и попытаться загрузить ее с помощью loadUI, который использует тесты soapUI. Чтобы это работало, конечная точка должна быть защищенной, и поскольку моя конечная точка обработки будет использовать безопасность сообщений, я считаю, что мой тест также должен использовать ее для достижения близких к результатам тестирования рабочей нагрузки.

Кажется, я не могу настроить soapUI для успешного вызова службы. Я попробовал несколько комбинаций подписи и шифрования ввода и вывода с сертификатом клиента и сервера. Кто-нибудь удалось добиться успешной конфигурации безопасности сообщений WCF и soapUI?

Ниже перечислены примеры из моей конфигурации:

Переплет:

  <wsHttpBinding>

            <binding name="MessageSecurity">
                <security mode="Message">
                    <message clientCredentialType="Certificate" negotiateServiceCredential="false"/>
                </security>
            </binding>

        </wsHttpBinding>

Поведение

    <behaviors>
        <serviceBehaviors>
            <behavior name="customBehavior">
                <serviceMetadata httpGetEnabled="True"/>
                <serviceDebug includeExceptionDetailInFaults="True"/>

                <serviceCredentials>
                    <clientCertificate>
                        <authentication certificateValidationMode="PeerTrust"/>
                    </clientCertificate>
                    <serviceCertificate findValue="MyWebServicesCertificate" x509FindType="FindBySubjectName" storeLocation="LocalMachine" storeName="My"/>
                </serviceCredentials>
            </behavior>
        </serviceBehaviors>

        <endpointBehaviors>
            <behavior name="webHttp">
                <webHttp/>
            </behavior>
        </endpointBehaviors>

    </behaviors>
</system.serviceModel>

Услуги:

            <service behaviorConfiguration="customBehavior" name="MyService">

            <!-- Service Endpoint -->
            <endpoint name="Production" address="" binding="wsHttpBinding" bindingConfiguration="MessageSecurity" contract="IMyService">

                <identity>
                    <dns value="web_services_svr"/>
                </identity>
            </endpoint>




            <host>
                <baseAddresses>
                    <add baseAddress="http://web_services_svr/MyService.svc" />
                </baseAddresses>
            </host>

        </service>
4b9b3361

Ответ 1

установите для параметра negotiateServiceCredential значение false, а также установите значениеSecuritySession на false.

после такой возможности взаимодействия. Если вы добавите ProtectionLecel.Sign в свои контракты (например, не шифруете), это еще проще.

Ответ 2

Возможно, вы захотите проверить несколько вещей.

1) Установить negotiateServiceCredential = "false"

<wsHttpBinding>
   <binding name="wsHttpSecure">
      <security mode="Message">
         <message clientCredentialType="UserName" negotiateServiceCredential="false"    
                  establishSecurityContext="false" algorithmSuite="Default" />
      </security>
   </binding>
</wsHttpBinding>

2) Также убедитесь, что в SOAP UI вы отметили отметку "Добавить WSA по умолчанию для"

Проверить эту ссылку http://ddkonline.blogspot.com.br/2012/10/wcf-45-host-unreachable-when-calling.html

3) Для прохождения сертификата клиента проверьте следующую ссылку

http://www.soapui.org/SOAP-and-WSDL/applying-ws-security.html

Надеюсь, это поможет.

Ответ 4

Существует проблема с SoapUI в сети, где есть веб-прокси. Вы должны настроить параметры прокси-сервера в SoapUI, чтобы это работало, если не было другой проблемы.

Ответ 5

Попробуйте сделать звонок, используя плагин firefox или завиток. Если вы можете успешно запустить вызов с помощью любого инструмента, попробуйте скопировать запрос и запустить его из soapUI. Если вызов работает с использованием любого другого инструмента, он должен работать также и в soapUI, если вы не вызываете вызов soap/tcp