private string CreateSAMLResponse(string userName,LogoutRequest logoutRequest)
        {
            SLOSamlResponse SAMLResponse = new SLOSamlResponse(logoutRequest);
            using (StringWriter sw = new StringWriter())
            {
                XmlWriterSettings xws = new XmlWriterSettings();
                xws.OmitXmlDeclaration = true;

                using (XmlWriter xw = XmlWriter.Create(sw, xws))
                {
                    xw.WriteStartElement("samlp", "LogoutResponse", "urn:oasis:names:tc:SAML:2.0:protocol");
                    xw.WriteAttributeString("ID", SAMLResponse.ID);
                    xw.WriteAttributeString("Version", SAMLResponse.Version);
                    xw.WriteAttributeString("IssueInstant", SAMLResponse.IssueInstant);
                    xw.WriteAttributeString("InResponseTo", SAMLResponse.InResponseTo);

                    xw.WriteStartElement("saml", "Issuer", "urn:oasis:names:tc:SAML:2.0:assertion");
                    xw.WriteString(SAMLResponse.Issuer);
                    xw.WriteEndElement();

                    xw.WriteStartElement("samlp", "Status", "urn:oasis:names:tc:SAML:2.0:protocol");
                    xw.WriteStartElement("samlp", "StatusCode", "urn:oasis:names:tc:SAML:2.0:protocol");
                    xw.WriteAttributeString("Value", SAMLResponse.status);
                    xw.WriteEndElement();
                    xw.WriteEndElement();

                    xw.WriteEndElement();
                }
                XmlDocument xmldoc = new XmlDocument();
                xmldoc.LoadXml(sw.ToString());
                X509Certificate2 xcert = new X509Certificate2(HttpRuntime.AppDomainAppPath + "\\" + "idp.pfx", "password");
                AppendSignatureToXMLDocument(ref xmldoc, "", xcert);
                byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(xmldoc.OuterXml.ToString());
                return System.Convert.ToBase64String(toEncodeAsBytes);
            }
            return null;

        }
Exemplo n.º 2
0
        private string CreateSAMLResponse(string userName, LogoutRequest logoutRequest)
        {
            SLOSamlResponse SAMLResponse = new SLOSamlResponse(logoutRequest);

            using (StringWriter sw = new StringWriter())
            {
                XmlWriterSettings xws = new XmlWriterSettings();
                xws.OmitXmlDeclaration = true;

                using (XmlWriter xw = XmlWriter.Create(sw, xws))
                {
                    xw.WriteStartElement("samlp", "LogoutResponse", "urn:oasis:names:tc:SAML:2.0:protocol");
                    xw.WriteAttributeString("ID", SAMLResponse.ID);
                    xw.WriteAttributeString("Version", SAMLResponse.Version);
                    xw.WriteAttributeString("IssueInstant", SAMLResponse.IssueInstant);
                    xw.WriteAttributeString("InResponseTo", SAMLResponse.InResponseTo);

                    xw.WriteStartElement("saml", "Issuer", "urn:oasis:names:tc:SAML:2.0:assertion");
                    xw.WriteString(SAMLResponse.Issuer);
                    xw.WriteEndElement();

                    xw.WriteStartElement("samlp", "Status", "urn:oasis:names:tc:SAML:2.0:protocol");
                    xw.WriteStartElement("samlp", "StatusCode", "urn:oasis:names:tc:SAML:2.0:protocol");
                    xw.WriteAttributeString("Value", SAMLResponse.status);
                    xw.WriteEndElement();
                    xw.WriteEndElement();

                    xw.WriteEndElement();
                }
                XmlDocument xmldoc = new XmlDocument();
                xmldoc.LoadXml(sw.ToString());
                X509Certificate2 xcert = new X509Certificate2(HttpRuntime.AppDomainAppPath + "\\" + "idp.pfx", "password");
                AppendSignatureToXMLDocument(ref xmldoc, "", xcert);
                byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(xmldoc.OuterXml.ToString());
                return(System.Convert.ToBase64String(toEncodeAsBytes));
            }
            return(null);
        }