Example #1
0
        bool ImportHttpTransport(MetadataImporter importer, PolicyConversionContext context,
                                 XmlElement transportPolicy,
                                 out HttpTransportBindingElement bindingElement)
        {
            XmlElement transportToken;

            if (!GetTransportToken(importer, transportPolicy, out transportToken))
            {
                bindingElement = null;
                return(false);
            }

            if (transportToken == null)
            {
                bindingElement = new HttpTransportBindingElement();
                return(true);
            }

            bool error;
            var  tokenElementList = PolicyImportHelper.GetPolicyElements(transportToken, out error);

            if (error || (tokenElementList.Count != 1))
            {
                importer.AddWarning("Invalid policy assertion: {0}", transportToken.OuterXml);
                bindingElement = null;
                return(false);
            }

            var tokenElement = tokenElementList [0];

            if (!PolicyImportHelper.SecurityPolicyNS.Equals(tokenElement.NamespaceURI) ||
                !tokenElement.LocalName.Equals("HttpsToken"))
            {
                importer.AddWarning("Invalid policy assertion: {0}", tokenElement.OuterXml);
                bindingElement = null;
                return(false);
            }

            var httpsTransport = new HttpsTransportBindingElement();

            bindingElement = httpsTransport;

            var certAttr = tokenElement.GetAttribute("RequireClientCertificate");

            if (!String.IsNullOrEmpty(certAttr))
            {
                httpsTransport.RequireClientCertificate = Boolean.Parse(certAttr);
            }
            return(true);
        }
Example #2
0
        bool ImportTcpTransport(MetadataImporter importer, PolicyConversionContext context,
                                XmlElement transportPolicy)
        {
            XmlElement transportToken;

            if (!GetTransportToken(importer, transportPolicy, out transportToken))
            {
                return(false);
            }

            if (transportToken == null)
            {
                return(true);
            }

            bool error;
            var  tokenElementList = PolicyImportHelper.GetPolicyElements(transportToken, out error);

            if (error || (tokenElementList.Count != 1))
            {
                importer.AddWarning("Invalid policy assertion: {0}", transportToken.OuterXml);
                return(false);
            }

            var tokenElement = tokenElementList [0];

            if (!PolicyImportHelper.FramingPolicyNS.Equals(tokenElement.NamespaceURI))
            {
                importer.AddWarning("Invalid policy assertion: {0}", tokenElement.OuterXml);
                return(false);
            }

            if (tokenElement.LocalName.Equals("WindowsTransportSecurity"))
            {
                if (!ImportWindowsTransportSecurity(importer, context, tokenElement))
                {
                    return(false);
                }
            }
            else if (tokenElement.LocalName.Equals("SslTransportSecurity"))
            {
                context.BindingElements.Add(new SslStreamSecurityBindingElement());
            }

            return(true);
        }