2016-02-29 65 views
0

我正在构建一个使用SAMLv2验证用户身份的应用程序。身份提供者成功进行身份验证后,将响应返回给浏览器,然后发送给目标服务器。如何验证SAMLv2响应是否来自IdP?

修剪响应看起来像如下:

<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

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

IDP的“有效性”或信任是您必须在您的应用程序中确定的内容。如果签名有效,那么这意味着SAML消息是从IDP与相应的私钥发送的。然后,您必须决定是否信任该IDP。

+0

我想你想写'相应的私人钥匙' –

+0

确实我做过。改变。谢谢 –