2012-04-20 29 views
1

我一直在尝试使用传输和邮件安全以及相互证书身份验证来为WCF服务创建基于Metro的客户端。WCF城域互操作邮件未加密

我有每个模式独立工作,不在一起 - 即,仅消息安全工程,主体被加密,并通过HTTP,或仅SSL作品发送的,没有被加密的消息。激活它们使得客户端通过SSL发送未加密的消息。

这是我目前的绑定:

<customBinding> 
    <binding name="customBind"> 
     <transactionFlow /> 
     <security authenticationMode="MutualCertificate" allowSerializedSigningTokenOnReply="true" defaultAlgorithmSuite="Basic128" includeTimestamp="true" securityHeaderLayout="Lax"> 
     </security> 
     <textMessageEncoding messageVersion="Soap11" /> 
     <httpsTransport requireClientCertificate="false"/> 
     <!--<httpTransport />--> 
    </binding> 
    </customBinding> 

随着httpTransport,消息加密,与httpsTransport,他们不是。服务器响应“验证消息安全性时发生错误”,因为消息未加密。 Metro客户端失败,并显示“com.sun.xml.wss.XWSSecurityException:未满足安全要求 - 消息中没有安全标头”。

有没有人遇到过这个?任何线索,为什么这可能会发生,或者我可以探索的可能的事情?附加信息:使用Netbeans 7.1.1和Metro 2.2。

+0

如果通过SSL发送,您是否需要加密消息? – 2012-04-20 18:10:58

+0

不幸的是,我的确 - 安全要求决定了传输和消息安全都是必需的。 – Sorcerer13 2012-04-20 18:27:29

+0

你可以发布你正在尝试的绑定配置吗?应该只是在安全属性上指定mode =“both”的情况。另外,Metro支持ws- *标准,所以你没有使用wsHttpBinding的原因? – dez 2012-04-29 00:21:02

回答

2

我设法通过从wsdl中移除TransportBinding元素来解决这个问题,并让Java处理传输安全性而不是Metro。