Java 需要绕过响应消息的WCF解密

Java 需要绕过响应消息的WCF解密,java,wcf,encryption,vb.net-2010,Java,Wcf,Encryption,Vb.net 2010,我正在连接一个JavaWeb服务,该服务在响应中使用了一个额外的密钥。我的客户端是用vb.net(VS 2010,.net 4.0)编写的。此密钥使用我的公钥加密,用于加密响应消息。因此,当我将客户端请求发送到此服务时,我在响应中收到以下错误:“传入消息是使用令牌签名的,该令牌与用于加密正文的令牌不同。这不是预期的。”为了解决此错误,我创建了一个自定义消息编码器来截获响应消息,获取密钥并使用我的私钥对其进行解密,然后使用该密钥对响应消息进行解密。我已成功解密该消息,并使用解密后的消息修改了响应消

我正在连接一个JavaWeb服务,该服务在响应中使用了一个额外的密钥。我的客户端是用vb.net(VS 2010,.net 4.0)编写的。此密钥使用我的公钥加密,用于加密响应消息。因此,当我将客户端请求发送到此服务时,我在响应中收到以下错误:“传入消息是使用令牌签名的,该令牌与用于加密正文的令牌不同。这不是预期的。”为了解决此错误,我创建了一个自定义消息编码器来截获响应消息,获取密钥并使用我的私钥对其进行解密,然后使用该密钥对响应消息进行解密。我已成功解密该消息,并使用解密后的消息修改了响应消息,并将该消息返回到自定义消息编码器ReadMessage方法,在该方法中,它将创建返回到WCF进行处理的消息。然而,即使使用解密后的返回消息,我仍然会收到相同的错误:“传入消息是使用令牌签名的,该令牌与用于加密正文的令牌不同。这不是预期的。”即使在我手动解密消息之后,WCF似乎仍在尝试解密该消息。我在这个问题上花了很多时间,正在尝试决定如何绕过默认的WCF解密过程,让它使用我的自定义解密消息。任何帮助都将不胜感激。

例如,如果您正在自定义编码器中使用ReadMessage重载之一

public override Message ReadMessage(ArraySegment buffer、BufferManager BufferManager、string contentType)

然后以预期的格式返回解密后的消息,例如,使用

返回Message.CreateMessage(MessageVersion.Soap11,String.Empty,XElement.Parse(plainTextData))

您应该将
AsymmetricSecurityBindingElement.EnableUnsecuredResponse
设置为true,它完全用于允许加密请求和解密(明文)响应,重要的是返回的响应中没有安全头(这是在上面的代码示例中创建新响应的方式)