soapUI与WCF消息安全性

时间:2011-07-06 19:34:12

标签: wcf wcf-security soapui

我正在尝试配置我的WCF(.NET 4.0)服务,以便可以使用soapUI进行测试。我正在使用带有消息安全性的wsHttpBinding。我的目标是在公共测试端点上公开服务,并尝试使用使用soapUI测试的loadUI对其进行加载测试。为了实现这一点,端点需要是安全的,因为我的生产端点将使用消息安全性,我认为我的测试也应该使用它来实现接近生产负载测试结果。

我似乎无法配置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 个答案:

答案 0 :(得分:1)

将negotiateServiceCredential设置为false,并将setupSecuritySession设置为false。

此后可以实现互操作性。如果您在合同上添加ProtectionLecel.Sign(例如,不加密),则更容易。

答案 1 :(得分:1)

您可能想要检查一些事情。

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 To”

检查此链接   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

我希望有所帮助。

答案 2 :(得分:0)

有同样的问题。

最终放弃并取消了安检 - WCF : soapUI error "BadContextToken"

答案 3 :(得分:0)

在存在Web代理的网络中,SoapUI存在问题。您必须在SoapUI中配置代理设置才能使其正常工作,假设没有其他问题。

答案 4 :(得分:0)

尝试使用firefox插件或curl进行调用。如果您可以使用任何工具成功运行呼叫,请尝试复制请求并从soapUI运行它。如果调用使用任何其他工具,它应该在soapUI中工作,除非您进行soap / tcp调用