将标头添加到WCF RequestSecurityToken消息

时间:2015-06-09 21:53:59

标签: c# wcf ws-security wshttpbinding

我尝试设置将使用WSHttpBinding进行通信的客户端(Web应用程序)和服务(WCF服务)。看来为了使用这种绑定,客户端发送初步消息来设置频道。

在客户端和服务之间存在一个在自定义标头上路由的服务总线。使用BasicHttpBinding安全性时,该消息没有问题。

我的问题是:有没有办法在初步的RequestSecurityToken消息中添加相同的自定义标头?

提前谢谢。

1 个答案:

答案 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")));