如何在node.js中创建SAML断言签名



我正在使用一个外部api,该api要求我创建一个用于相互tls身份验证的saml断言。我正在构建的与api通信的客户端是用nodejs编写的。我找不到任何可以为我创建saml断言的库,所以我最终模板化了一个从xml文件导入的saml断言,并使用手把填充了必要的字段。我现在唯一缺少的是签名,我很难找到生成的文档。

下面是我试图完成的一个例子:

<ds:Signature>
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#_df0cbca2-3511-4586-b5f3-0211b1700413">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>{{fillMeIn}}</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>{{MeToo!}}</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>...secret...certificate...</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>

在前面的例子中,我需要签名和摘要的值,如果能深入了解如何生成这些值,我们将不胜感激。动态(程序化(生成它们的能力将是理想的。我们使用的是自签名X509证书。提前感谢!

我找到了xml加密库,它似乎满足了我的需求。

最新更新