protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                Trace.Write("SP", "Single Logout Service");

                // Receive the logout request or response.
                XmlElement       logoutMessage   = null;
                string           relayState      = null;
                bool             isRequest       = false;
                bool             signed          = false;
                X509Certificate2 x509Certificate = (X509Certificate2)Application[Global.IdPX509Certificate];

                SingleLogoutService.ReceiveLogoutMessageByHTTPRedirect(Request, out logoutMessage, out relayState, out isRequest, out signed, x509Certificate.PublicKey.Key);

                if (isRequest)
                {
                    ProcessLogoutRequest(new LogoutRequest(logoutMessage), relayState);
                }
                else
                {
                    ProcessLogoutResponse(new LogoutResponse(logoutMessage), relayState);
                }
            }

            catch (Exception exception)
            {
                Trace.Write("SP", "Error in single logout service.", exception);
            }
        }
Exemplo n.º 2
0
        protected void logoutButton_Click(object sender, EventArgs e)
        {
            try {
                // Create a logout request.
                LogoutRequest logoutRequest = new LogoutRequest();
                logoutRequest.Issuer = new Issuer(CreateAbsoluteURL("~/"));
                logoutRequest.NameID = new NameID(Context.User.Identity.Name);

                // Serialize the logout request to XML for transmission.
                XmlElement logoutRequestXml = logoutRequest.ToXml();

                // Send the logout request to the IdP over HTTP redirect.
                string           logoutURL       = WebConfigurationManager.AppSettings["idpLogoutURL"];
                X509Certificate2 x509Certificate = (X509Certificate2)Application[Global.SPX509Certificate];

                SingleLogoutService.SendLogoutRequestByHTTPRedirect(Response, logoutURL, logoutRequestXml, null, x509Certificate.PrivateKey);

                // Logout locally.
                FormsAuthentication.SignOut();
                Session.Abandon();
            }
            catch (Exception exception) {
                Trace.Write("SP", "Error on logout page", exception);
            }
        }
        // Send the logout response.
        private void SendLogoutResponse(ref LogoutResponse logoutResponse)
        {
            Trace.Write("SP", "Sending logout response.");

            // Serialize the logout response for transmission.
            XmlElement logoutResponseXml = logoutResponse.ToXml();

            // Send the logout response over HTTP redirect.
            X509Certificate2 x509Certificate = (X509Certificate2)Application[Global.SPX509Certificate];

            SingleLogoutService.SendLogoutResponseByHTTPRedirect(Response, WebConfigurationManager.AppSettings["idpLogoutURL"], logoutResponseXml, null, x509Certificate.PrivateKey, null);

            Trace.Write("SP", "Sent logout response.");
        }