我正在从 ADFS 生成一个由证书签名的 SAML2 令牌。现在我正在尝试使用相同的证书验证该签名。
X509Certificate2 cert = LoadCert();
XmlDocument token = LoadXmlToken(); //SAML2 token
XmlElement signature = GetSignatureElement(token);
SignedXml signedXml = new SignedXml(token);
signedXml.LoadXml(signature);
bool result1 = signedXml.CheckSignature(); //true
bool result2 = signedXml.CheckSignature(cert, false); //false
CheckSignature() 根据令牌中包含的公钥验证签名。CheckSignature(cert, [true/false]) 根据证书中的私钥验证签名。
怎么可能一个有效而另一个无效?