我对SAML中的SignatureValue有疑问。在一些SAML教程中,我读到了有关签名值的内容,其中我们需要在发送到SP时使用私钥加密SignatureValue。
在发送到SP之前,我们真的需要在IDP端加密SignatureValue吗?
因为我认为IDP将向SP发送PublicKey,SP将拥有在SP侧验证有效负载是否存在完整性问题的私钥。
请您提出宝贵的建议。提前谢谢你。
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
<ds:Reference URI="#_SAML-11">
<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/2001/04/xmlenc#sha256" />
<ds:DigestValue>asdfsf2342sdfsaf1123132123sdfsafsafsdf</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>TkjljjlkljllTlkjlsjdljslakfjlsnfl2352nlkn2k3l5lknln2l35nlnlnl2k3nk5lknlkn23l5</ds:SignatureValue>
</ds:Signature>发布于 2021-02-12 18:38:46
在发送到SP时,我们需要使用私钥加密SignatureValue
我从来没有听说过这样的事情,我想不出有一个商业SAML产品支持加密签名(或解密)。我还会注意到,在规范中没有提到它。此外,我无法理解如何加密SignatureValue将有帮助-任何事情。
作为IdP,您需要正确地处理XML签名(这是95%的DIYers陷入困境的领域),然后您需要向服务提供者提供适当的公钥,以便验证签名。
发布于 2021-02-15 14:50:54
IdP应该使用其私钥对SAML响应进行数字签名。它的公钥通常在SP应该拥有的SAML2元数据中发布。然后,SP可以验证来自IdP的SAML响应的签名。如果在IdP和SP之间有任何更改,签名就不会生效。
此外,一些SPs要求IdP对属性进行加密,在这种情况下,它们将位于EncryptedAssertion节点中。
您可以在SAML实例中看到这些。
发布于 2021-02-17 09:27:51
我有通过SAML与大约6个供应商(又名服务提供商)集成的经验。我想指出的是,一些服务提供者可能会避免特定的步骤,而不需要签名或加密。例如,可以同时对断言和SAMLResponse进行签名,但不需要进行断言加密。或者其他方式。我已经发布了一些更多的细节,这里和一些C#代码在GitHub上的实现,它们可能帮助您了解如何执行某些步骤。如果有帮助请告诉我。
https://stackoverflow.com/questions/66175003
复制相似问题