2008-09-23 164 views
1

我正在构建服务之间的一些路由功能。原始服务和执行路由的服务具有相同的配置;两者都使用NetTcpBinding的下面的结合配置:WCF路由消息安全

NetTcpBinding的

安全模式= “消息”

消息clientCredentialType = “username” 的

服务行为使用ASPNET会员供应商和我们在机器上安装的客户端证书。

当我关掉它转发就好了,但是当它接通我得到下面的异常信息安全:

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

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

问题:

  1. 是我的目标在想什么?

  2. 有没有一种方法可以继续使用消息安全进行路由,而不需要令牌服务的复杂性?

+0

有两个问题 - 1.您需要路由器服务的安全吗?从某种意义上说,消息安全的思想是它允许路由等工作在消息上而不必解密。 2.您在路由器服务中遇到的错误?两种服务是否共享相同的服务证书? – 2009-01-13 14:48:16

回答

1

您提到在无安全性和消息安全性之间切换。您是否确保在接收端更改WCF服务端点以及端点?如果没有,并且两者不匹配,则会收到错误。这就是那个错误似乎对我说的话。

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