コード例 #1
0
 public SLOSamlResponse(LogoutRequest logoutReq)
 {
     ID = "_" + System.Guid.NewGuid().ToString();
     InResponseTo = logoutReq.ID;
     Version = logoutReq.Version;
     IssueInstant = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ");
     Issuer = (string.IsNullOrEmpty(ConfigurationManager.AppSettings["IDPIssuer"])) ? "Microchip" : ConfigurationManager.AppSettings["IDPIssuer"];
     status = "urn:oasis:names:tc:SAML:2.0:status:Success";
 }
コード例 #2
0
 public LogoutRequest RecieveSLO(HttpRequest request)
 {
     XmlElement logoutRequestElement = (XmlElement)null;
     if (request.RequestType == "GET")
     {
         RecieveRequest(request, out logoutRequestElement);
     }
     LogoutRequest logoutRequest = new LogoutRequest(logoutRequestElement);
     return logoutRequest;
 }
コード例 #3
0
        public LogoutRequest RecieveSLO(HttpRequest request)
        {
            XmlElement logoutRequestElement = (XmlElement)null;

            if (request.RequestType == "GET")
            {
                RecieveRequest(request, out logoutRequestElement);
            }
            LogoutRequest logoutRequest = new LogoutRequest(logoutRequestElement);

            return(logoutRequest);
        }
コード例 #4
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;

        }
コード例 #5
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);
        }
コード例 #6
0
 public void SendSLO(HttpResponse httpResponse, string userName, LogoutRequest logoutRequest)
 {
     string samlResponse = CreateSAMLResponse(userName,logoutRequest);
     SendResponse(httpResponse, logoutRequest.SingleLogoutServiceUrl, "SAMLResponse", samlResponse);
 }
コード例 #7
0
        public void SendSLO(HttpResponse httpResponse, string userName, LogoutRequest logoutRequest)
        {
            string samlResponse = CreateSAMLResponse(userName, logoutRequest);

            SendResponse(httpResponse, logoutRequest.SingleLogoutServiceUrl, "SAMLResponse", samlResponse);
        }