如何验证SAMLv2响应是否来自IdP?

时间:2016-02-29 16:58:40

标签: x509certificate saml-2.0

我正在构建一个使用SAMLv2对用户进行身份验证的应用程序。在身份提供商成功进行身份验证后,将响应返回给浏览器,然后将其发送到目标服务器。

修剪后的响应如下所示:

<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/2000/09/xmldsig#rsa-sha1" /> <ds:Reference URI="#uuid-73c06e86-88d2-4204-91f4-3d484bc782cc"> <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>H9ffPJ6/jq25p13BcziR0hNLkGg=</ds:DigestValue> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>FegjeGwQO..J7hpJEQ==</ds:SignatureValue> <ds:KeyInfo> <ds:X509Data> <ds:X509Certificate><!-- certificate data --></ds:X509Certificate> </ds:X509Data> <!-- more certificates --> </ds:KeyInfo> </ds:Signature>

我有一系列X509证书<ds:DigestValue /><ds:SignatureValue />。这两个字段包含什么以及如何验证响应是否由有效服务器返回?

1 个答案:

答案 0 :(得分:1)

签名是标准XML signatures。例如,可以使用OpenSAML在java中完成此验证。 Here is a blogpost显示了如何。

IDP的“有效性”或信任是您必须在申请中确定的。如果签名验证则表示SAML消息是从具有相应私钥的IDP发送的。然后你必须决定你是否相信这个IDP。