2012-03-03 31 views
5

Vì vậy, tôi sẽ là người đầu tiên thừa nhận rằng tôi biết rất ít về nội dung WS-Security. Tôi có một nhà máy dịch vụ SOAP như sau. Khi sử dụng dịch vụ này với các máy khách .NET chỉ thử nghiệm nội bộ (sử dụng lớp proxy .cs autogenerated thông qua svcutil.exe + tự động tạo WSDL), tất cả đều ổn. Tôi có thể thấy 4 cặp bắt tay SOAP yêu cầu bảo mật đầu tiên trước yêu cầu/phản hồi SOAP 'thực tế' (được mã hóa) thứ 5. Tôi hiểu bảo mật nói chung nhưng tôi muốn biết chi tiết về việc bắt tay cụ thể này - tôi đoán họ đang thực hiện trao đổi khóa?SOAP 1.2 qua SSL + Xác thực cơ sở HTTP hoặc WS-Security?

Dù sao, một phần vì

  1. Tôi không biết an ninh tiềm ẩn SOAP bắt tay (WS-Security)
  2. TÔI biết HTTPS và HTTP xác thực cơ bản (và thích tốc độ của phương tiện giao thông SSL vs mỗi thông điệp SOAP crypto/ký xác minh hoạt động)
  3. tôi muốn bảo đảm vệ tinh viễn thông SOAP endpoint trong khi vẫn giữ khả năng tương thích với các khách hàng NET không

tôi đã suy nghĩ tôi nên làm trao đổi SOAP qua HTTPS + xác thực cơ sở HTTP. Vì vậy, các câu hỏi đun sôi đến

  1. Trao đổi SOAP qua HTTPS + xác thực cơ sở HTTP ok? hoặc một cơn ác mộng (= interop nightmare!) hiếm hoi!
  2. Theo dõi ở trên: Tôi sẽ định cấu hình nhà máy dịch vụ của mình theo cài đặt được đề xuất như thế nào? Không cần phải nói, tôi muốn ở lại dặm từ Windows Authentication đó là vô nghĩa trong một môi trường internet ...

    public class SoapServiceHostFactory : ServiceHostFactory 
    { 
        private Type serviceInterfaceType; 
    
        public SoapServiceHostFactory(Type serviceInterfaceType) 
        { 
         this.serviceInterfaceType = serviceInterfaceType; 
        } 
    
        protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses) 
        { 
         ServiceHost host = base.CreateServiceHost(serviceType, baseAddresses); 
         ServiceMetadataBehavior smb = host.Description.Behaviors.Find<ServiceMetadataBehavior>(); 
    
         // Enable metadata 
         if (smb == null) 
         { 
          smb = new ServiceMetadataBehavior(); 
          host.Description.Behaviors.Add(smb); 
         } 
         smb.HttpGetEnabled = true; 
    
         // Enable debugging for service 
         ServiceDebugBehavior sdb = host.Description.Behaviors.Find<ServiceDebugBehavior>(); 
         if (sdb == null) 
         { 
          sdb = new ServiceDebugBehavior(); 
          host.Description.Behaviors.Add(sdb); 
         } 
         sdb.IncludeExceptionDetailInFaults = true; 
    
         // SOAP Security configuration 
         WSHttpBinding myBinding = new WSHttpBinding(); 
         myBinding.Security.Mode = SecurityMode.Transport; 
    
         host.AddServiceEndpoint(serviceInterfaceType, myBinding, ""); 
         return host; 
        } 
    } 
    

Trả lời

5

Bạn sẽ tìm thấy SSL + Basic Auth được ồ ạt hơn tương thích hơn WS-Security.

Nếu bạn chỉ làm tích hợp điểm, SSL sẽ là một cách để đảm bảo, nếu bạn có tích hợp nhiều nhóm, phức tạp hơn, thì bạn có thể cần phải khắc phục sự cố với WS -Bảo vệ.

+0

Cảm ơn. Có lẽ tôi nên đăng phần thứ hai như một câu hỏi riêng biệt, nhưng làm thế nào tôi có thể cấu hình nhà máy dịch vụ SOAP của mình để thực hiện SSL + Basic Auth? Đặc biệt không rõ là làm thế nào cơ bản Auth biết tập tin dB/XML để thực hiện tra cứu chống lại? Tie trong một số nhà cung cấp thành viên? Cảm ơn! – DeepSpace101

+1

Thông thường SSL & Auth và được xử lý bởi máy chủ web thay vì lớp SOAP, nhưng không chắc chắn về WCF – superfell

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