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;
        }