Delphi 将签名的XML发送到安全Web服务将返回BadSignature
我正在使用Delphi7的Delphi 将签名的XML发送到安全Web服务将返回BadSignature,delphi,soap,delphi-7,Delphi,Soap,Delphi 7,我正在使用Delphi7的HTTPReqResp组件将数字签名的SOAP XML文档发送到HTTPS web服务。我使用Eldos XML BlackBox,已将所有转换算法、规范化方法、签名方法等设置为web服务所需的,并已与技术支持人员确认 我已经使用XMLBlackbox验证了签名,还有这个 两种方式都确认签名是正确的。但是,当我通过HTTPReqResp.execute发送XML文档时,我得到的响应是BadSignature(签名值无效) 最初,由于XML错误(格式错误等),我收到了不同
HTTPReqResp
组件将数字签名的SOAP XML文档发送到HTTPS web服务。我使用Eldos XML BlackBox,已将所有转换算法
、规范化方法
、签名方法
等设置为web服务所需的,并已与技术支持人员确认
我已经使用XMLBlackbox验证了签名,还有这个
两种方式都确认签名是正确的。但是,当我通过HTTPReqResp.execute
发送XML文档时,我得到的响应是BadSignature(签名值无效)
最初,由于XML错误(格式错误等),我收到了不同的错误消息。服务似乎将首先执行所有标准格式检查,然后尝试验证签名。因为我得到了BadSignature
响应,所以XML的其余部分必须是正确的
我想我这里有两个问题
该站点正在使用Access Manager WebSEAL 接收合作伙伴很可能以某种方式获得了一份修改过的文档。一些小的修改不应该影响签名(至少这是想法),因此您可能需要检查以下内容:
utf-8
,但我见过只接受iso-8859-1
另外,您是否尝试过使用SecureBackbox组件发布此消息?他们还有一个HTTP客户端,可以执行SSL,还可以用来验证通过导线发送的字节。谢谢您的回复。我的XML使用utf-8。由于文档已签名并保存到磁盘,因此该文件已验证为OK,我假设签名后编码没有更改。关于SecureBackbox组件,我应该查看哪些组件?该文件指向一个网址(URL)。请查看
HTTPBlackBox
包,特别是TElHTTPSClient
组件。我有这个组件,只是不确定如何使用它。我已经设置了OnCertificateEded并提供了X509证书,并且使用url和表示XML的流调用了Post方法。它还有我设置为true的OnCertificateValidate。我还设置了OutPutStream。当我运行POST方法时,它就在那里,程序没有响应。显然没有正确地使用它。你能给我指一下正确的方向吗。谢谢你这个问题已经解决了。事实证明,Web服务特别注意使用signature元素接收太多信息。我删除了任何RSA签名等元素,并使其正常工作。谢谢