2011-07-06 23 views
12

Tôi đang cố định cấu hình dịch vụ WCF (.NET 4.0) của mình để có thể kiểm tra bằng soapUI. Tôi đang sử dụng wsHttpBinding với bảo mật thư. Mục tiêu của tôi là để lộ dịch vụ trên một điểm cuối kiểm tra công cộng và cố gắng tải thử nghiệm nó với loadUI trong đó sử dụng các xét nghiệm soapUI. Để làm việc này, thiết bị đầu cuối cần phải được bảo mật và vì điểm cuối sản xuất của tôi sẽ sử dụng bảo mật thông báo, tôi sẽ thử sử dụng nó để đạt được kết quả kiểm tra tải sản xuất.soapUI Với WCF Message Security

Tôi dường như không thể định cấu hình soapUI để gọi thành công dịch vụ. Tôi đã thử một số kết hợp ký và mã hóa đầu vào và đầu ra với chứng chỉ máy khách và máy chủ. Có ai quản lý để đạt được một cấu hình bảo mật thành công tin nhắn của WCF và soapUI?

Sau đây là exerpts từ cấu hình của tôi:

Binding:

<wsHttpBinding> 

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

     </wsHttpBinding> 

Behavior

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

dịch vụ:

  <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

Lỗi chính xác mà bạn nhận được từ SOAPUI đang cố gắng kết nối là gì? – kroonwijk

+0

Thử gọi dịch vụ từ ứng dụng bảng điều khiển.nắm bắt yêu cầu và phản hồi bằng cách sử dụng trình kích hoạt và xác minh. –

Trả lời

0

Có một vấn đề với soapUI trong một mạng, nơi có một web proxy. Bạn phải cấu hình các thiết lập proxy trong SoapUI để có được điều này để làm việc, giả sử không có vấn đề khác.

1

đặt thương lượngServiceCredential thành false và cũng thiết lậpSecuritySession thành false.

sau khi khả năng tương tác này là có thể. Nếu bạn thêm ProtectionLecel.Sign vào hợp đồng của bạn (ví dụ như không mã hóa) nó thậm chí còn dễ dàng hơn.

+0

+1: Đó là một gợi ý tốt, nhưng nó vẫn không muốn làm việc. Sau khi tôi đặt 'negotiateServiceCredential' và' establishSecuritySession' thành false, có một lỗi khác trong bản ghi nhật ký WCF - "Không có kênh nào có thể chấp nhận thông điệp có hành động 'http://schemas.xmlsoap.org/ws/2005/ 02/trust/RST/Issue '. " – VoodooChild

+0

nếu bạn đặt cả hai thành false thì trong soapui cũng không cần bất kỳ loại bảo mật nào –

0

Thử thực hiện cuộc gọi bằng plugin firefox hoặc curl. Nếu bạn có thể nhận cuộc gọi chạy thành công bằng cách sử dụng bất kỳ công cụ nào, hãy thử sao chép yêu cầu và chạy nó từ soapUI. Nếu cuộc gọi hoạt động bằng bất kỳ công cụ nào khác, nó cũng hoạt động tốt trong soapUI trừ khi bạn thực hiện xà phòng/tcp gọi

1

Bạn có thể muốn kiểm tra một vài thứ.

1) Set negotiateServiceCredential = "false"

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

2) Ngoài ra hãy chắc chắn trong giao diện người dùng SOAP bạn kiểm tra dấu ấn "Add WSA mặc định Để"

Kiểm tra liên kết này http://ddkonline.blogspot.com.br/2012/10/wcf-45-host-unreachable-when-calling.html

3) Để vượt qua kiểm tra chứng chỉ ứng dụng khách sau liên kết

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

Tôi hy vọng điều đó sẽ hữu ích.

Các vấn đề liên quan