Beispiel #1
0
        /// <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.");
            }
        }