【问题标题】:Add Header to WCF RequestSecurityToken Message将标头添加到 WCF RequestSecurityToken 消息
【发布时间】:2015-06-09 21:53:58
【问题描述】:

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

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

我的问题是:有什么方法可以将相同的自定义标头添加到初步的 RequestSecurityToken 消息中?

提前谢谢你。

【问题讨论】:

  • 标头应该是 RST 消息的一部分,还是您在谈论 HTTP 标头?
  • 我想让它成为 RST soap 消息头的一部分。

标签: c# wcf ws-security wshttpbinding


【解决方案1】:

这个问题已经解决了。

不幸的是,根据 MSDN 文档,使用 WCF 传输安全性的服务不能通过路由器,服务或客户端也不应该位于 Internet (https://msdn.microsoft.com/en-us/library/ff648863.aspx#TransportSecurity) 上。

我们想违反这两个“原则”。

所以为了减少消息,从五个调用和响应减少到一个,我们切换到消息安全并关闭了建立安全上下文和协商服务凭据。 - 这必须在服务和客户端配置设置上完成。

除此之外,一个值得注意的提示可能是,为了将服务指向我们的服务总线,我们在客户端更改了服务的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")));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多