WCF路由消息安全性

时间:2020-03-06 14:36:09  来源:igfitidea点击:

我正在建立服务之间的一些路由功能。原始服务和进行路由的服务具有相同的配置。两者都使用netTcpBinding和以下绑定配置:

netTcpBinding
  
  security mode="Message"
  
  message clientCredentialType="UserName"

服务行为使用AspNet成员资格提供程序和我们在计算机上安装的客户端证书。

当我关闭消息安全性时,它可以正常中继,但是当它打开时,我会收到以下异常:

"无法处理该消息。这很可能是因为操作'http:// foo / Whatever'不正确,或者该消息包含无效或者过期的安全上下文令牌,或者是由于绑定之间不匹配*。如果服务由于不活动而中止通道,则上下文令牌将无效。为防止服务中止空闲会话,请过早增加服务端点绑定的接收超时。" (强调我的)

我的想法是证书对消息运行两次(一次在原始呼叫上,然后在中继上),这就是破坏消息安全令牌的原因。

问题:

  • 我的目标是目标吗?
  • 有没有一种方法可以继续使用消息安全性进行路由而又不具有令牌服务的复杂性?

解决方案

我们提到在无安全性和消息安全性之间切换。我们确定要同时更改WCF服务端点和接收端的端点吗?如果不一致,并且两者不匹配,则会收到错误消息。那就是那个错误似乎在对我说的话。

对于问题2,我们正在运行哪种类型的环境?一个可以使用加密和签名的封闭系统,或者一个可能需要使用特殊密钥的公共环境?