public string GetRequest(SAMLLib.Enum.RequestFormat format) { using (StringWriter sw = new StringWriter()) { XmlWriterSettings xws = new XmlWriterSettings(); xws.OmitXmlDeclaration = true; using (XmlWriter xw = XmlWriter.Create(sw, xws)) { xw.WriteStartElement("samlp", "AuthnRequest", "urn:oasis:names:tc:SAML:2.0:protocol"); xw.WriteAttributeString("ID", id); xw.WriteAttributeString("Version", "2.0"); xw.WriteAttributeString("IssueInstant", issue_instant); xw.WriteAttributeString("ProtocolBinding", "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"); xw.WriteAttributeString("AssertionConsumerServiceURL", SAMLSettings.assertionConsumerServiceUrl); xw.WriteStartElement("saml", "Issuer", "urn:oasis:names:tc:SAML:2.0:assertion"); xw.WriteString(SAMLSettings.issuer); xw.WriteEndElement(); xw.WriteStartElement("samlp", "NameIDPolicy", "urn:oasis:names:tc:SAML:2.0:protocol"); xw.WriteAttributeString("Format", "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"); xw.WriteAttributeString("AllowCreate", "true"); xw.WriteEndElement(); // xw.WriteAttributeString("Format", "urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified"); //xw.WriteStartElement("samlp", "RequestedAuthnContext", "urn:oasis:names:tc:SAML:2.0:protocol"); //xw.WriteAttributeString("Comparison", "exact"); //xw.WriteEndElement(); //xw.WriteStartElement("saml", "AuthnContextClassRef", "urn:oasis:names:tc:SAML:2.0:assertion"); //xw.WriteString("urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"); //xw.WriteEndElement(); xw.WriteEndElement(); } if (format == SAMLLib.Enum.RequestFormat.Base64) { Base64Encoder encoder = new Base64Encoder(); return encoder.GetBase64EncodeStr(sw.ToString()); } return sw.ToString(); } }
public string GetLogoutRequest(string nameID, SAMLLib.Enum.RequestFormat format) { using (StringWriter sw = new StringWriter()) { XmlWriterSettings xws = new XmlWriterSettings(); xws.OmitXmlDeclaration = true; using (XmlWriter xw = XmlWriter.Create(sw, xws)) { xw.WriteStartElement("samlp", "LogoutRequest", "urn:oasis:names:tc:SAML:2.0:protocol"); xw.WriteAttributeString("xmlns", "saml", null, "urn:oasis:names:tc:SAML:2.0:assertion"); xw.WriteAttributeString("ID", "_" + System.Guid.NewGuid().ToString()); xw.WriteAttributeString("Version", "2.0"); xw.WriteAttributeString("IssueInstant", DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ")); xw.WriteAttributeString("Destination", SAMLSettings.idp_logout_target_url); xw.WriteStartElement("saml", "Issuer", "urn:oasis:names:tc:SAML:2.0:assertion"); xw.WriteString(SAMLSettings.issuer); xw.WriteEndElement(); xw.WriteStartElement("saml", "NameID", null); xw.WriteAttributeString("SPNameQualifier", SAMLSettings.issuer); xw.WriteString(nameID); xw.WriteEndElement(); xw.WriteEndElement(); } if (format == SAMLLib.Enum.RequestFormat.Base64) { Base64Encoder encoder = new Base64Encoder(); return encoder.GetBase64EncodeStr(sw.ToString()); } return sw.ToString(); } }