savonにはまだこの機能がないため、wsseセキュリティを備えたWebサービスに接続する必要があり、すべてのハッシュとトークンを手動で生成する必要があります。
私を狂わせるのは署名です。
<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を取得できませんでした。