将 Header 添加到 WCF RequestSecurityToken 消息
Add Header to WCF RequestSecurityToken Message
我正在尝试设置将使用 WSHttpBinding 进行通信的客户端(Web 应用程序)和服务(WCF 服务)。似乎为了使用此绑定,客户端会发送初步消息来设置通道。
在客户端和服务之间存在一个服务总线,该总线在自定义 header 上进行路由。该消息在使用 BasicHttpBinding 安全性时,路由没有问题。
我的问题是:有什么办法可以在初步的 RequestSecurityToken 消息中添加相同的自定义 header 吗?
提前致谢。
已解决。
不幸的是,根据 MSDN 文档,使用 WCF 传输安全性的服务不能通过路由器,服务或客户端也不应位于 Internet 上 (https://msdn.microsoft.com/en-us/library/ff648863.aspx#TransportSecurity)。
我们想同时违反 'principles'.
因此,为了减少消息,从五个调用和响应减少到一个,我们切换到 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")));
我正在尝试设置将使用 WSHttpBinding 进行通信的客户端(Web 应用程序)和服务(WCF 服务)。似乎为了使用此绑定,客户端会发送初步消息来设置通道。
在客户端和服务之间存在一个服务总线,该总线在自定义 header 上进行路由。该消息在使用 BasicHttpBinding 安全性时,路由没有问题。
我的问题是:有什么办法可以在初步的 RequestSecurityToken 消息中添加相同的自定义 header 吗?
提前致谢。
已解决。
不幸的是,根据 MSDN 文档,使用 WCF 传输安全性的服务不能通过路由器,服务或客户端也不应位于 Internet 上 (https://msdn.microsoft.com/en-us/library/ff648863.aspx#TransportSecurity)。
我们想同时违反 'principles'.
因此,为了减少消息,从五个调用和响应减少到一个,我们切换到 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")));