/// <summary>VerifyByXsd</summary> /// <param name="saml">string</param> /// <param name="schema">SAML2Enum.SamlSchema</param> /// <returns>bool</returns> /// <remarks> /// SAMLのXSDが作成できていないため書きかけ。 /// - 現時点では、VerifyByXPath メソッドを使って XPath により検証しています。 /// - XSD検証の方が明らかに良い場合は移行を検討します。 /// </remarks> private static bool VerifyByXsd(string saml, SAML2Enum.SamlSchema schema) { string embeddedXsdFileName = ""; string targetNamespace = ""; // どうも、OASISのXSDではダメで、 // - https://docs.oasis-open.org/security/saml/v2.0/saml-schema-protocol-2.0.xsd // - https://docs.oasis-open.org/security/saml/v2.0/saml-schema-assertion-2.0.xsd // 個別にXSDを作成しないとダメっぽい。 switch (schema) { case SAML2Enum.SamlSchema.Request: embeddedXsdFileName = "XXXX.xsd"; // RequestのSAML用のXSD targetNamespace = "urn:oasis:names:tc:SAML:2.0:..."; break; case SAML2Enum.SamlSchema.Response: embeddedXsdFileName = "XXXX.xsd"; // ResponseのSAML用のXSD targetNamespace = "urn:oasis:names:tc:SAML:2.0:..."; break; //case SAML2Enum.SamlSchema.Assertion: // embeddedXsdFileName = "XXXX.xsd"; // targetNamespace = "urn:oasis:names:tc:SAML:2.0:..."; // break; } // 以下の関数は適切に動作するが、XSDに問題があるため動作しない。 return(XmlLib.ValidateByEmbeddedXsd( "OpenTouryo.Framework", saml, embeddedXsdFileName, targetNamespace)); }
/// <summary>Root</summary> public static void Root() { // Xmlロード string xml = EmbeddedResourceLoader.LoadXMLAsString( "OpenTouryo.Public", "Touryo.Infrastructure.Public.Xml.TestXml.xml"); // Xsdによる検証 if (XmlLib.ValidateByEmbeddedXsd( xml, "OpenTouryo.Public", "Touryo.Infrastructure.Public.Xml.TestXsd.xsd", "urn:bookstore-schema")) { MyDebug.OutputDebugAndConsole("XmlLib", "is working properly."); } else { MyDebug.OutputDebugAndConsole("XmlLib", "is not working properly."); } }