我们有一个与WSE的第三方提供商Web服务对话的批处理程序,对WSE Web服务的调用使用x509证书加密。
我们向第三方提供商提供了两种不同的证书
我们已经实施了WebServiceResponseLogger
继承自SoapInputFilter
的{{1}},并将其作为Pipeline
添加到InputFilter
。使用预生产证书时,这可以很好地记录响应。但是,当我们切换到Production并使用生产证书时,不会记录响应。
现在我们已经看到请求和响应通过fiddler,所以我们知道实际上出现了响应,问题是我们在fiddler中看到的响应是原始响应。
我试过谷歌试图弄清楚我们是否可以在小提琴手中解密回复,我们有正确的证书,所以我认为这是可能的。如果没有fiddler,是否已存在允许我解密soap响应的工具?
答案 0 :(得分:3)
最后找到了我发现的解决方案,以防其他人遇到此问题:)
我设法在MSDN上找到一个link,让我走上了正确的轨道并构建了以下控制台程序,该程序成功地解密了我从小提琴会话中得到的响应。
我安装了WSE 2.0 NuGet包
try
{
// http://msdn.microsoft.com/en-us/library/aa529137.aspx
XmlDocument response = new XmlDocument();
response.Load("Response.xml");
var encryptedKeyElement = response.GetElementsByTagName("xenc:EncryptedKey")[0] as XmlElement;
var encryptedDataElement = response.GetElementsByTagName("xenc:EncryptedData")[0] as XmlElement;
EncryptedKey encryptedKey = new EncryptedKey(encryptedKeyElement);
EncryptedData data = new EncryptedData(encryptedDataElement, encryptedKey);
var decryptedData = data.Decrypt();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
Console.WriteLine("Press any key to exit");
Console.Read();
}