Gần đây tôi đã chuyển một dịch vụ từ BasicHttpBinding sang WSHttpBinding (tức là SOAP 1.1 -> SOAP 1.2). Trong WCF , sử dụng WSHttpBinding () làm cho nó bắt đầu sử dụng một số cài đặt bảo mật mặc định. Tôi cho rằng các cài đặt bảo mật mặc định tương tự cũng được WCF Test Client sử dụng vì máy khách và máy chủ có thể tiếp tục nói chuyện sau khi chuyển sang WSHttpBinding 'được bảo mật'. Trong fiddler, tôi đã xác nhận thiết lập bảo mật này vì tôi có thể chứng kiến những cái bắt tay bảo mật phức tạp hơn từ phản hồi yêu cầu đơn giản trước đó tức là
Trước: (BasicHttpBinding)
[HttpRequest] (Yêu cầu SOAP rõ ràng)
[HttpResponse] (Phản hồi SOAP rõ ràng)
Sau: (WSHttpBinding)
[HttpRequest] RequestSecurityToken
[HttpResponse] RequestSecurityTokenResponse
[HttpRequest] RequestSecurityToken
[HttpResponse] RequestSecurityTokenResponse
[HttpRequest] RequestSecurityTokenResponse
[HttpResponse] RequestSecurityTokenResponseCollection
[HttpRequest] Mã hóaData
[HttpResponse] Đã mã hóaData
[HttpRequest] EncryptedData (yêu cầu cấp ứng dụng thực tế)
[HttpResponse] EncryptedData (phản hồi mức ứng dụng thực tế)
Vì vậy, tôi có thể an toàn cho rằng an ninh đang được áp dụng. Bây giờ đến câu hỏi:
Câu hỏi 1: Cài đặt bảo mật là gì? Tôi không bao giờ nói với WCF của bất kỳ nhà cung cấp thành viên. Trong thực tế, tôi không có bất kỳ bảng (SQL hoặc XML) nào về bất kỳ tên người dùng <-> mật khẩu nào. Vậy những loại xác thực đang xảy ra? Mặc dù WCF Test Client có thể xác thực như trên, SoapUI không nhận các mặc định Microsoft .NET này và có vấn đề. SoapUI cố gắng liên lạc văn bản rõ ràng và sau đó máy chủ phản hồi với lỗi mã thông báo bảo mật không chính xác.
Câu hỏi 2: Mô hình bảo mật được thực hiện phổ biến nhất cho SOAP 1.2 là gì? Có phải thông qua chứng chỉ hoặc mật khẩu tên người dùng hoặc thông báo hoặc _____? Các thông tin đăng nhập được lưu trữ (SQL / XML như thế nào) và được định cấu hình ở phía máy chủ WCF như thế nào?