2015-06-09 22 views
5

Tôi đang cố thiết lập một ứng dụng khách (ứng dụng web) và dịch vụ (dịch vụ WCF) sẽ giao tiếp bằng WSHttpBinding. Có vẻ như để sử dụng ràng buộc này, máy khách gửi các thông báo sơ bộ để thiết lập kênh.Thêm tiêu đề vào WCF RequestSecurityToken Message

Giữa máy khách và dịch vụ tồn tại một xe buýt dịch vụ đang định tuyến trên tiêu đề tùy chỉnh. Thông báo, khi sử dụng bảo mật BasicHttpBinding, các tuyến đường không có vấn đề.

Câu hỏi của tôi là: Có cách nào để thêm cùng tiêu đề tùy chỉnh vào thông báo RequestSecurityToken sơ bộ không?

Cảm ơn bạn trước.

+0

là tiêu đề phải là một phần của thông điệp RST, hoặc bạn đang nói về một HTTP header? – mclark1129

+0

Tôi muốn biến nó thành một phần của tiêu đề thông báo xà phòng RST. – hunda27

Trả lời

1

Điều này đã được giải quyết.

Thật không may, theo tài liệu MSDN, một dịch vụ sử dụng bảo mật vận tải WCF không thể đi qua bộ định tuyến, cũng không nên, dịch vụ hoặc ứng dụng khách, được đặt trên internet (https://msdn.microsoft.com/en-us/library/ff648863.aspx#TransportSecurity).

Chúng tôi muốn vi phạm cả hai 'nguyên tắc'.

Vì vậy, để cắt giảm các tin nhắn, từ năm cuộc gọi và trả lời thành một, chúng tôi đã chuyển sang Message Security và tắt tính năng EstablishSecurityContext và NegotiateServiceCredential. - Việc này phải được thực hiện đối với cả cài đặt cấu hình Dịch vụ và ứng dụng khách. Ngoài ra, một mẹo đáng lưu ý có thể là, để chỉ dịch vụ đến xe buýt dịch vụ của chúng tôi, chúng tôi đã thay đổiClientViaBehavior của dịch vụ ở phía Khách hàng.

Tắt EstablishContext và NegotiateServiceCredential:

WSHttpBinding binding = new WSHttpBinding(); 

binding.Security.Mode = SecurityMode.Message; 
binding.Security.Message.EstablishSecurityContext = false; 
binding.Security.Message.NegotiateServiceCredential = false; 

Point khách hàng để Bus Service:

serviceClient.Endpoint.EndpointBehaviors.Add(new ClientViaBehavior(new Uri("http://url/WCFService/ServiceName.svc"))); 
Các vấn đề liên quan