我建议您使用 ADFS 2.0,它在声明映射方面非常有帮助,并且可以与 AD 一起使用。
http://msdn.microsoft.com/en-us/magazine/ee335705.aspx
您的应用将接收并解析身份验证循环后返回给您的网络服务器的最终声明。
唯一的问题是 ADFS 仅适用于 AD,因此如果我们假设所有身份提供者都是基于 AD 的,它将作为 IdP 工作。对于其他 LDAP,您必须寻找其他解决方案。
对于 SAML 响应,它也是一个 XML 输入,您可以像下面这样阅读
XDocument responseDoc = XDocument.Load(@"XMLFile1.xml");
XNamespace pr = "urn:oasis:names:tc:SAML:1.0:protocol";
XNamespace ast = "urn:oasis:names:tc:SAML:1.0:assertion";
XElement status = responseDoc.Element(pr + "Response").Element(pr + "Status");
string statusCode = (string)status.Element(pr + "StatusCode").Attribute("Value");
string statusMessage = (string)status.Element(pr + "StatusMessage");
Console.WriteLine("Status code: {0}; message: {1}.", statusCode, statusMessage);
XElement attStatement = responseDoc.Element(pr + "Response").Element(ast + "Assertion").Element(ast + "AttributeStatement");
string surname = (string)attStatement.Elements(ast + "Attribute").First(a => a.Attribute("AttributeName").Value == "Surname").Element(ast + "AttributeValue");
string firstname = (string)attStatement.Elements(ast + "Attribute").First(a => a.Attribute("AttributeName").Value == "FirstName").Element(ast + "AttributeValue");
string nrn = (string)attStatement.Elements(ast + "Attribute").First(a => a.Attribute("AttributeName").Value == "NRN").Element(ast + "AttributeValue");
Console.WriteLine("First name: {0}, last name: {1}; NRN: {2}", firstname, surname, nrn);
查看此主题以获取更多信息
https://forums.asp.net/t/1490469.aspx?parse+SAML+XML+response
希望对你有帮助。