Я решил проблему.Было несколько проблем, с которыми мне приходилось сталкиваться:
Ответ, с которым я имел дело, был строкой, которую я получил и не проверял.Когда я получил строку Base64Encoded и затем попытался проверить ее, я получил другую ошибку (Malformed Reference Element), которая была решена в шаге 2.
Проблема Malformed Reference Element была решена путем созданияновый класс, унаследованный от SignedXML, а затем перезаписывающий класс GetIdElement.Вот код для этого:
public class SamlSignedXml : SignedXml
{
private string _referenceAttributeId = "";
public SamlSignedXml(XmlElement element, string referenceAttributeId)
: base(element)
{
_referenceAttributeId = referenceAttributeId;
}
public override XmlElement GetIdElement(
XmlDocument document, string idValue)
{
return (XmlElement)
document.SelectSingleNode(
string.Format("//*[@{0}='{1}']",
_referenceAttributeId, idValue));
}
}
А когда вы создаете экземпляр класса SamlSignedXml, вы делаете следующее: SamlSignedXml signatureXml = new SamlSignedXml (элемент, "ResponseID");
где элементом является элемент XmlDocument.DocumentElement.
Это решило проблему