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>
Ответы
Ответ 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
Надеюсь, это поможет.
Ответ 3
Имела ту же проблему.
В конце концов сдался и взял защиту - WCF: ошибка soapUI "BadContextToken"
Ответ 4
Существует проблема с SoapUI в сети, где есть веб-прокси. Вы должны настроить параметры прокси-сервера в SoapUI, чтобы это работало, если не было другой проблемы.
Ответ 5
Попробуйте сделать звонок, используя плагин firefox или завиток. Если вы можете успешно запустить вызов с помощью любого инструмента, попробуйте скопировать запрос и запустить его из soapUI. Если вызов работает с использованием любого другого инструмента, он должен работать также и в soapUI, если вы не вызываете вызов soap/tcp