soapUI с защитой сообщений WCF - PullRequest
12 голосов
/ 06 июля 2011

Я пытаюсь настроить службу 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>

Ответы [ 5 ]

1 голос
/ 12 октября 2013

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

1) SetgotiateServiceCredential = "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

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

1 голос
/ 09 апреля 2012

установите для значения атрибутаgotiateServiceCredential значение false, а для свойства false - значение false.

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

0 голосов
/ 14 января 2013

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

0 голосов
/ 05 апреля 2012

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

0 голосов
/ 13 февраля 2012

Была такая же проблема.

В конце концов сдался и снял защиту - WCF: ошибка soapUI "BadContextToken"

...