protected override Dictionary<string, string> CreateAuthInfo(SamlResponseAttributes attributes) { var authInfo = new Dictionary<string, string> { { "user_id", attributes.NameID }, { "secondary_id", attributes.Attributes.GetValueOrDefault("Employee Id") }, { "username", attributes.Attributes.GetValueOrDefault("Login") }, { "email", attributes.Attributes.GetValueOrDefault("Email") }, { "department", attributes.Attributes.GetValueOrDefault("Department") }, { "name", attributes.Attributes.GetValueOrDefault("Full Name") }, { "first_name", attributes.Attributes.GetValueOrDefault("First Name") }, { "last_name", attributes.Attributes.GetValueOrDefault("Last Name") } }; return authInfo; }
protected SamlResponseAttributes ParseSamlResponseAttributes(XmlDocument xDoc) { XmlNamespaceManager xManager = new XmlNamespaceManager(xDoc.NameTable); xManager.AddNamespace("ds", SignedXml.XmlDsigNamespaceUrl); xManager.AddNamespace("saml", "urn:oasis:names:tc:SAML:2.0:assertion"); xManager.AddNamespace("samlp", "urn:oasis:names:tc:SAML:2.0:protocol"); XmlNode nameNode = xDoc.SelectSingleNode("/samlp:Response/saml:Assertion/saml:Subject/saml:NameID", xManager); var retVal = new SamlResponseAttributes { OriginalResponseDoc = xDoc, NameID = nameNode.InnerText, Attributes = new Dictionary<string, string>() }; XmlNodeList attributes = xDoc.GetElementsByTagName("Attribute"); foreach(XmlNode attribute in attributes) { retVal.Attributes.Add(attribute.Attributes["Name"].Value, attribute.InnerText); } return retVal; }
protected abstract Dictionary<string, string> CreateAuthInfo(SamlResponseAttributes attributes);
protected override Dictionary<string, string> CreateAuthInfo(SamlResponseAttributes attributes) { var authInfo = _responseParser(attributes); return authInfo; }