我尝试设置将使用WSHttpBinding进行通信的客户端(Web应用程序)和服务(WCF服务)。看来为了使用这种绑定,客户端发送初步消息来设置频道。
在客户端和服务之间存在一个在自定义标头上路由的服务总线。使用BasicHttpBinding安全性时,该消息没有问题。
我的问题是:有没有办法在初步的RequestSecurityToken消息中添加相同的自定义标头?
提前谢谢。
答案 0 :(得分:1)
这已经解决了。
不幸的是,根据MSDN文档,使用WCF传输安全性的服务无法通过路由器,服务或客户端也不应该位于Internet(https://msdn.microsoft.com/en-us/library/ff648863.aspx#TransportSecurity)上。
我们想要违反这两个“原则”。
因此,为了减少消息,从五个调用和一个响应,我们切换到Message Security并关闭EstablishSecurityContext和NegotiateServiceCredential。 - 必须在服务和客户端配置设置上完成此操作。
除此之外,一个值得注意的提示可能是,为了将服务指向我们的服务总线,我们更改了客户端服务的ClientViaBehavior。
关闭EstablishContext和NegotiateServiceCredential:
WSHttpBinding binding = new WSHttpBinding();
binding.Security.Mode = SecurityMode.Message;
binding.Security.Message.EstablishSecurityContext = false;
binding.Security.Message.NegotiateServiceCredential = false;
将客户端指向服务总线:
serviceClient.Endpoint.EndpointBehaviors.Add(new ClientViaBehavior(new Uri("http://url/WCFService/ServiceName.svc")));