我需要连接到具有 wsse 安全性的 Web 服务,并且需要手动生成所有哈希和令牌,因为 savon 还没有此功能。
让我发疯的是签名。
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#_0">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>......</DigestValue>
</Reference>
</SignedInfo>
这是引用的部分:
<u:Timestamp u:Id="_0">
<u:Created>2012-01-04T08:21:22.143Z</u:Created>
<u:Expires>2012-01-04T08:26:22.143Z</u:Expires>
</u:Timestamp>
据我了解,我需要规范化引用的元素(时间戳),然后使用 SHA-1 对其进行哈希处理,然后将其编码为 base64。
问题是,我需要规范化时间戳的哪一部分?我尝试使用整个元素,然后分别使用和,但我从未得到正确的 DigestValue。