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ì
- Tôi không biết an ninh tiềm ẩn SOAP bắt tay (WS-Security)
- 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)
- 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
- 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!
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; } }
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
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