/// <summary> /// Build a LogoutRequest and send it to the Federation Partner with the given entity ID. /// </summary> /// <param name="entityID"></param> private static void CreateLogoutRequest(string entityID) { User user = UserSessionsHandler.CurrentUser; Saml20LogoutRequest request = new Saml20LogoutRequest(); request.Issuer = IDPConfig.ServerBaseUrl; request.SessionIndex = Guid.NewGuid().ToString("N"); request.SubjectToLogOut = new NameID(); request.SubjectToLogOut.Format = Saml20Constants.NameIdentifierFormats.Unspecified; request.SubjectToLogOut.Value = user.Username; Saml20MetadataDocument metadata = GetMetadata(entityID); // HTTPRedirect(SAMLAction.SAMLRequest, metadata.SLOEndpoint(SAMLBinding.REDIRECT), request.GetXml()); HttpPostBindingBuilder builder = new HttpPostBindingBuilder(metadata.SLOEndpoint(SAMLBinding.POST)); builder.Action = SAMLAction.SAMLRequest; //builder.Response = assertionDoc.OuterXml; string xmloutput = request.GetXml().OuterXml; TextWriter tw = new StreamWriter("C:\\temp\\idp.txt", true); tw.WriteLine(xmloutput); tw.Close(); builder.Response = xmloutput; builder.GetPage().ProcessRequest(HttpContext.Current); HttpContext.Current.Response.End(); }
/// <summary> /// Build a LogoutResponse and send it to the federation partner with the given entity ID. /// </summary> /// <param name="entityID"></param> private static void CreateLogoutResponse(string entityID) { Saml20MetadataDocument metadata = GetMetadata(entityID); //IDPEndPointElement endpoint = metadata.SLOEndpoint(SAMLBinding.REDIRECT); IDPEndPointElement endpoint = metadata.SLOEndpoint(SAMLBinding.POST); Saml20LogoutResponse response = new Saml20LogoutResponse(); response.Issuer = IDPConfig.ServerBaseUrl; response.Destination = endpoint.Url; response.StatusCode = Saml20Constants.StatusCodes.Success; HTTPRedirect(SAMLAction.SAMLResponse, endpoint, response.GetXml()); }