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"; }
public LogoutRequest RecieveSLO(HttpRequest request) { XmlElement logoutRequestElement = (XmlElement)null; if (request.RequestType == "GET") { RecieveRequest(request, out logoutRequestElement); } LogoutRequest logoutRequest = new LogoutRequest(logoutRequestElement); return logoutRequest; }
public LogoutRequest RecieveSLO(HttpRequest request) { XmlElement logoutRequestElement = (XmlElement)null; if (request.RequestType == "GET") { RecieveRequest(request, out logoutRequestElement); } LogoutRequest logoutRequest = new LogoutRequest(logoutRequestElement); return(logoutRequest); }
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; }
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); }
public void SendSLO(HttpResponse httpResponse, string userName, LogoutRequest logoutRequest) { string samlResponse = CreateSAMLResponse(userName,logoutRequest); SendResponse(httpResponse, logoutRequest.SingleLogoutServiceUrl, "SAMLResponse", samlResponse); }
public void SendSLO(HttpResponse httpResponse, string userName, LogoutRequest logoutRequest) { string samlResponse = CreateSAMLResponse(userName, logoutRequest); SendResponse(httpResponse, logoutRequest.SingleLogoutServiceUrl, "SAMLResponse", samlResponse); }