internal void ApplyConfiguration(X509CertificateRecipientClientCredential cert)
        {
            if (cert == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("cert");
            }

            PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;

            if (propertyInfo[ConfigurationStrings.Authentication].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Authentication.ApplyConfiguration(cert.Authentication);
            }

            if (propertyInfo[ConfigurationStrings.SslCertificateAuthentication].ValueOrigin != PropertyValueOrigin.Default)
            {
                cert.SslCertificateAuthentication = new X509ServiceCertificateAuthentication();
                this.SslCertificateAuthentication.ApplyConfiguration(cert.SslCertificateAuthentication);
            }

            this.DefaultCertificate.ApplyConfiguration(cert);

            X509ScopedServiceCertificateElementCollection scopedCertificates = this.ScopedCertificates;

            for (int i = 0; i < scopedCertificates.Count; ++i)
            {
                scopedCertificates[i].ApplyConfiguration(cert);
            }
        }
Example #2
0
        public override void ApplyConfiguration(BindingElement bindingElement)
        {
            base.ApplyConfiguration(bindingElement);
            ConnectionOrientedTransportBindingElement binding = (ConnectionOrientedTransportBindingElement)bindingElement;

            binding.ConnectionBufferSize = this.ConnectionBufferSize;

#if DESKTOP
            binding.HostNameComparisonMode       = this.HostNameComparisonMode;
            binding.ChannelInitializationTimeout = this.ChannelInitializationTimeout;
#endif
            PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;
            if (propertyInfo[ConfigurationStrings.MaxBufferSize].ValueOrigin != PropertyValueOrigin.Default)
            {
                binding.MaxBufferSize = this.MaxBufferSize;
            }

#if DESKTOP
            if (this.MaxPendingConnections != ConnectionOrientedTransportDefaults.MaxPendingConnectionsConst)
            {
                binding.MaxPendingConnections = this.MaxPendingConnections;
            }
            binding.MaxOutputDelay = this.MaxOutputDelay;
            if (this.MaxPendingAccepts != ConnectionOrientedTransportDefaults.MaxPendingAcceptsConst)
            {
                binding.MaxPendingAccepts = this.MaxPendingAccepts;
            }
#endif

            binding.TransferMode = this.TransferMode;
        }
Example #3
0
        public override void ApplyConfiguration(BindingElement bindingElement)
        {
            base.ApplyConfiguration(bindingElement);
            HttpTransportBindingElement binding = (HttpTransportBindingElement)bindingElement;

            binding.AllowCookies           = this.AllowCookies;
            binding.AuthenticationScheme   = this.AuthenticationScheme;
            binding.BypassProxyOnLocal     = this.BypassProxyOnLocal;
            binding.DecompressionEnabled   = this.DecompressionEnabled;
            binding.KeepAliveEnabled       = this.KeepAliveEnabled;
            binding.HostNameComparisonMode = this.HostNameComparisonMode;
            PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;

            if (propertyInfo[ConfigurationStrings.MaxBufferSize].ValueOrigin != PropertyValueOrigin.Default)
            {
                binding.MaxBufferSize = this.MaxBufferSize;
            }
            binding.MaxPendingAccepts         = this.MaxPendingAccepts;
            binding.ProxyAddress              = this.ProxyAddress;
            binding.ProxyAuthenticationScheme = this.ProxyAuthenticationScheme;
            binding.Realm = this.Realm;
            binding.RequestInitializationTimeout = this.RequestInitializationTimeout;
            binding.TransferMode = this.TransferMode;
            binding.UnsafeConnectionNtlmAuthentication = this.UnsafeConnectionNtlmAuthentication;
            binding.UseDefaultWebProxy       = this.UseDefaultWebProxy;
            binding.ExtendedProtectionPolicy = ChannelBindingUtility.BuildPolicy(this.ExtendedProtectionPolicy);
            this.WebSocketSettings.ApplyConfiguration(binding.WebSocketSettings);
            if (this.MessageHandlerFactory != null)
            {
                binding.MessageHandlerFactory = HttpMessageHandlerFactory.CreateFromConfigurationElement(this.MessageHandlerFactory);
            }
        }
        void InternalOnApplyConfiguration(ServiceEndpoint endpoint)
        {
            WebHttpEndpoint webHttpEndpoint = endpoint as WebHttpEndpoint;

            Fx.Assert(webHttpEndpoint != null, "The endpoint should be of type WebHttpServiceEndpoint since this is what was returned with CreateServiceEndpoint().");


            if (IsSet(ConfigurationStrings.HostNameComparisonMode))
            {
                webHttpEndpoint.HostNameComparisonMode = this.HostNameComparisonMode;
            }
            if (IsSet(ConfigurationStrings.MaxBufferPoolSize))
            {
                webHttpEndpoint.MaxBufferPoolSize = this.MaxBufferPoolSize;
            }
            if (IsSet(ConfigurationStrings.MaxReceivedMessageSize))
            {
                webHttpEndpoint.MaxReceivedMessageSize = this.MaxReceivedMessageSize;
            }
            if (IsSet(ConfigurationStrings.WriteEncoding))
            {
                webHttpEndpoint.WriteEncoding = this.WriteEncoding;
            }
            if (IsSet(ConfigurationStrings.TransferMode))
            {
                webHttpEndpoint.TransferMode = this.TransferMode;
            }
            if (IsSet(WebConfigurationStrings.HelpEnabled))
            {
                webHttpEndpoint.HelpEnabled = this.HelpEnabled;
            }
            if (IsSet(WebConfigurationStrings.DefaultOutgoingResponseFormat))
            {
                webHttpEndpoint.DefaultOutgoingResponseFormat = this.DefaultOutgoingResponseFormat;
            }
            if (IsSet(WebConfigurationStrings.AutomaticFormatSelectionEnabled))
            {
                webHttpEndpoint.AutomaticFormatSelectionEnabled = this.AutomaticFormatSelectionEnabled;
            }
            if (IsSet(WebConfigurationStrings.CrossDomainScriptAccessEnabled))
            {
                webHttpEndpoint.CrossDomainScriptAccessEnabled = this.CrossDomainScriptAccessEnabled;
            }
            if (IsSet(WebConfigurationStrings.FaultExceptionEnabled))
            {
                webHttpEndpoint.FaultExceptionEnabled = this.FaultExceptionEnabled;
            }
            PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;

            if (propertyInfo[ConfigurationStrings.MaxBufferSize].ValueOrigin != PropertyValueOrigin.Default)
            {
                webHttpEndpoint.MaxBufferSize = this.MaxBufferSize;
            }
            if (IsSet(WebConfigurationStrings.ContentTypeMapper))
            {
                webHttpEndpoint.ContentTypeMapper = WebHttpBindingElement.GetContentTypeMapper(this.ContentTypeMapper);
            }
            this.Security.ApplyConfiguration(webHttpEndpoint.Security);
            WebHttpBindingElement.ApplyReaderQuotasConfiguration(webHttpEndpoint.ReaderQuotas, this.ReaderQuotas);
        }
        /// <summary>
        /// Gets the endpoint identity from the configuration file
        /// </summary>
        /// <param name="element"></param>
        /// <returns></returns>
        private EndpointIdentity GetIdentity(IdentityElement element)
        {
            PropertyInformationCollection properties = element.ElementInformation.Properties;

            if (properties["userPrincipalName"].ValueOrigin != PropertyValueOrigin.Default)
            {
                return(EndpointIdentity.CreateUpnIdentity(element.UserPrincipalName.Value));
            }
            if (properties["servicePrincipalName"].ValueOrigin != PropertyValueOrigin.Default)
            {
                return(EndpointIdentity.CreateSpnIdentity(element.ServicePrincipalName.Value));
            }
            if (properties["dns"].ValueOrigin != PropertyValueOrigin.Default)
            {
                return(EndpointIdentity.CreateDnsIdentity(element.Dns.Value));
            }
            if (properties["rsa"].ValueOrigin != PropertyValueOrigin.Default)
            {
                return(EndpointIdentity.CreateRsaIdentity(element.Rsa.Value));
            }
            if (properties["certificate"].ValueOrigin != PropertyValueOrigin.Default)
            {
                X509Certificate2Collection supportingCertificates = new X509Certificate2Collection();
                supportingCertificates.Import(Convert.FromBase64String(element.Certificate.EncodedValue));
                if (supportingCertificates.Count == 0)
                {
                    throw new InvalidOperationException("UnableToLoadCertificateIdentity");
                }
                X509Certificate2 primaryCertificate = supportingCertificates[0];
                supportingCertificates.RemoveAt(0);
                return(EndpointIdentity.CreateX509CertificateIdentity(primaryCertificate, supportingCertificates));
            }

            return(null);
        }
Example #6
0
        // </Snippet84>

        // <Snippet85>
        static public void GetElementProperties()
        {
            // Get the current configuration file.
            System.Configuration.Configuration config =
                ConfigurationManager.OpenExeConfiguration(
                    ConfigurationUserLevel.None);

            // Get the section.
            UrlsSection section =
                (UrlsSection)config.GetSection("MyUrls");

            // Get the element.
            UrlConfigElement url = section.Simple;

            // Get the element properties.
            PropertyInformationCollection properties =
                url.ElementInformation.Properties;

            foreach (PropertyInformation prop in properties)
            {
                Console.WriteLine(
                    "Name: {0} Type: {1}", prop.Name,
                    prop.Type.ToString());
            }
        }
Example #7
0
        internal void Copy(IdentityElement source)
        {
            if (null == source)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("source");
            }

            PropertyInformationCollection properties = source.ElementInformation.Properties;

            if (properties[ConfigurationStrings.UserPrincipalName].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.UserPrincipalName.Value = source.UserPrincipalName.Value;
            }
            if (properties[ConfigurationStrings.ServicePrincipalName].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.ServicePrincipalName.Value = source.ServicePrincipalName.Value;
            }
            if (properties[ConfigurationStrings.Certificate].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Certificate.EncodedValue = source.Certificate.EncodedValue;
            }
            if (properties[ConfigurationStrings.CertificateReference].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.CertificateReference.StoreName     = source.CertificateReference.StoreName;
                this.CertificateReference.StoreLocation = source.CertificateReference.StoreLocation;
                this.CertificateReference.X509FindType  = source.CertificateReference.X509FindType;
                this.CertificateReference.FindValue     = source.CertificateReference.FindValue;
            }
        }
Example #8
0
        public override void ApplyConfiguration(System.ServiceModel.Channels.BindingElement bindingElement)
        {
            // Base configuration
            base.ApplyConfiguration(bindingElement);

            // Now process the own configuration
            SwaEncodingBindingElement Binding = (SwaEncodingBindingElement)bindingElement;

            PropertyInformationCollection PropertyInfos = ElementInformation.Properties;

            if (PropertyInfos["innerMessageEncoding"].ValueOrigin != PropertyValueOrigin.Default)
            {
                switch (this.InnerMessageEncoding)
                {
                case "textMessageEncoding":
                    Binding.InnerBindingElement = new TextMessageEncodingBindingElement();
                    break;

                case "binaryMessageEncoding":
                    Binding.InnerBindingElement = new BinaryMessageEncodingBindingElement();
                    break;

                default:
                    throw new ConfigurationErrorsException("Inner message encoding can be binary or text, only!");
                }
            }
        }
Example #9
0
        protected internal void ApplyConfiguration(ClientCredentials behavior)
        {
            if (behavior == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("behavior");
            }
            PropertyInformationCollection properties = base.ElementInformation.Properties;

            if (properties["windows"].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Windows.ApplyConfiguration(behavior.Windows);
            }
            if (properties["clientCertificate"].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.ClientCertificate.ApplyConfiguration(behavior.ClientCertificate);
            }
            if (properties["serviceCertificate"].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.ServiceCertificate.ApplyConfiguration(behavior.ServiceCertificate);
            }
            if (properties["issuedToken"].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.IssuedToken.ApplyConfiguration(behavior.IssuedToken);
            }
            if (properties["httpDigest"].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.HttpDigest.ApplyConfiguration(behavior.HttpDigest);
            }
            if (properties["peer"].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Peer.ApplyConfiguration(behavior.Peer);
            }
            behavior.SupportInteractive = this.SupportInteractive;
        }
Example #10
0
 protected override void OnApplyConfiguration(Binding binding)
 {
     NetTcpBinding nptBinding = (NetTcpBinding)binding;
     
     PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;
     nptBinding.TransactionFlow = this.TransactionFlow;
     nptBinding.TransferMode = this.TransferMode;
     nptBinding.TransactionProtocol = this.TransactionProtocol;
     nptBinding.HostNameComparisonMode = this.HostNameComparisonMode;
     if (this.ListenBacklog != TcpTransportDefaults.ListenBacklogConst)
     {
         nptBinding.ListenBacklog = this.ListenBacklog;                
     }
     nptBinding.MaxBufferPoolSize = this.MaxBufferPoolSize;
     if (propertyInfo[ConfigurationStrings.MaxBufferSize].ValueOrigin != PropertyValueOrigin.Default)
     {
         nptBinding.MaxBufferSize = this.MaxBufferSize;
     }
     if (this.MaxConnections != 0)
     {
         nptBinding.MaxConnections = this.MaxConnections;                
     }
     nptBinding.MaxReceivedMessageSize = this.MaxReceivedMessageSize;
     nptBinding.PortSharingEnabled = this.PortSharingEnabled;
     this.ReliableSession.ApplyConfiguration(nptBinding.ReliableSession);
     this.Security.ApplyConfiguration(nptBinding.Security);
     this.ReaderQuotas.ApplyConfiguration(nptBinding.ReaderQuotas);
 }
Example #11
0
        protected override void OnApplyConfiguration(Binding binding)
        {
            HttpBindingBase httpBindingBase = (HttpBindingBase)binding;

            httpBindingBase.BypassProxyOnLocal     = this.BypassProxyOnLocal;
            httpBindingBase.HostNameComparisonMode = this.HostNameComparisonMode;
            httpBindingBase.MaxBufferPoolSize      = this.MaxBufferPoolSize;
            httpBindingBase.MaxReceivedMessageSize = this.MaxReceivedMessageSize;
            httpBindingBase.TextEncoding           = this.TextEncoding;
            httpBindingBase.TransferMode           = this.TransferMode;
            httpBindingBase.UseDefaultWebProxy     = this.UseDefaultWebProxy;
            httpBindingBase.AllowCookies           = this.AllowCookies;
            if (this.ProxyAddress != null)
            {
                httpBindingBase.ProxyAddress = this.ProxyAddress;
            }

            PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;

            if (propertyInfo[ConfigurationStrings.MaxBufferSize].ValueOrigin != PropertyValueOrigin.Default)
            {
                httpBindingBase.MaxBufferSize = this.MaxBufferSize;
            }

            this.ReaderQuotas.ApplyConfiguration(httpBindingBase.ReaderQuotas);
        }
Example #12
0
        //Called by the WCF to apply the configuration settings (the property above) to the binding element
        public override void ApplyConfiguration(BindingElement bindingElement)
        {
            GZipMessageEncodingBindingElement binding      = (GZipMessageEncodingBindingElement)bindingElement;
            PropertyInformationCollection     propertyInfo = this.ElementInformation.Properties;

            if (propertyInfo["innerMessageEncoding"].ValueOrigin != PropertyValueOrigin.Default)
            {
                switch (this.InnerMessageEncoding)
                {
                case "textMessageEncoding":
                    binding.InnerMessageEncodingBindingElement = new TextMessageEncodingBindingElement();
                    ((TextMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).MaxReadPoolSize  = int.MaxValue;
                    ((TextMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).MaxWritePoolSize = int.MaxValue;
                    ((TextMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).ReaderQuotas.MaxStringContentLength = int.MaxValue;
                    ((TextMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).ReaderQuotas.MaxArrayLength         = int.MaxValue;
                    ((TextMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).ReaderQuotas.MaxBytesPerRead        = int.MaxValue;
                    break;

                case "binaryMessageEncoding":
                    binding.InnerMessageEncodingBindingElement = new BinaryMessageEncodingBindingElement();
                    ((BinaryMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).MaxReadPoolSize  = int.MaxValue;
                    ((BinaryMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).MaxWritePoolSize = int.MaxValue;
                    ((BinaryMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).ReaderQuotas.MaxStringContentLength = int.MaxValue;
                    ((BinaryMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).ReaderQuotas.MaxArrayLength         = int.MaxValue;
                    ((BinaryMessageEncodingBindingElement)binding.InnerMessageEncodingBindingElement).ReaderQuotas.MaxBytesPerRead        = int.MaxValue;
                    break;
                }
            }
        }
        protected override void OnApplyConfiguration(Binding binding)
        {
            WebHttpBinding webBinding = (WebHttpBinding)binding;

            webBinding.BypassProxyOnLocal     = this.BypassProxyOnLocal;
            webBinding.HostNameComparisonMode = this.HostNameComparisonMode;
            webBinding.MaxBufferPoolSize      = this.MaxBufferPoolSize;
            webBinding.MaxReceivedMessageSize = this.MaxReceivedMessageSize;

            webBinding.WriteEncoding      = this.WriteEncoding;
            webBinding.TransferMode       = this.TransferMode;
            webBinding.UseDefaultWebProxy = this.UseDefaultWebProxy;
            webBinding.AllowCookies       = this.AllowCookies;
            if (this.ProxyAddress != null)
            {
                webBinding.ProxyAddress = this.ProxyAddress;
            }
            PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;

            if (propertyInfo[ConfigurationStrings.MaxBufferSize].ValueOrigin != PropertyValueOrigin.Default)
            {
                webBinding.MaxBufferSize = this.MaxBufferSize;
            }
            webBinding.ContentTypeMapper = GetContentTypeMapper(this.ContentTypeMapper);
            webBinding.CrossDomainScriptAccessEnabled = this.CrossDomainScriptAccessEnabled;
            this.Security.ApplyConfiguration(webBinding.Security);
            ApplyReaderQuotasConfiguration(webBinding.ReaderQuotas, this.ReaderQuotas);
        }
Example #14
0
        /// <summary>
        /// Gets the endpoint identity from the configuration file
        /// </summary>
        /// <param name="element"></param>
        /// <returns></returns>
        private EndpointIdentity GetIdentity(IdentityElement element)
        {
            PropertyInformationCollection properties = element.ElementInformation.Properties;
            EndpointIdentity rev = GetEndpointIdentity(element, properties) ??
                                   GetEndpointIdentityByCertificate(element, properties);

            return(rev);
        }
        private static bool TryGetValue <T>(ConfigurationElement element, string name, out T value)
        {
            PropertyInformationCollection properties = element.ElementInformation.Properties;
            PropertyInformation           property   = properties.Cast <PropertyInformation>().FirstOrDefault(p => p.Name == name);

            bool hasProperty = property != null;

            value = hasProperty ? (T)property.Value : default(T);
            return(hasProperty);
        }
        public override void ApplyConfiguration(BindingElement bindingElement)
        {
            base.ApplyConfiguration(bindingElement);
            CompositeDuplexBindingElement binding      = (CompositeDuplexBindingElement)bindingElement;
            PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;

            if (propertyInfo[ConfigurationStrings.ClientBaseAddress].ValueOrigin != PropertyValueOrigin.Default)
            {
                binding.ClientBaseAddress = this.ClientBaseAddress;
            }
        }
        internal void Copy(ChannelEndpointElement source)
        {
            if (source == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("source");
            }

            PropertyInformationCollection properties = source.ElementInformation.Properties;

            if (properties[ConfigurationStrings.Address].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Address = source.Address;
            }
            if (properties[ConfigurationStrings.BehaviorConfiguration].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.BehaviorConfiguration = source.BehaviorConfiguration;
            }
            if (properties[ConfigurationStrings.Binding].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Binding = source.Binding;
            }
            if (properties[ConfigurationStrings.BindingConfiguration].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.BindingConfiguration = source.BindingConfiguration;
            }
            if (properties[ConfigurationStrings.Name].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Name = source.Name;
            }
            if (properties[ConfigurationStrings.Contract].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Contract = source.Contract;
            }
            if (properties[ConfigurationStrings.Headers].ValueOrigin != PropertyValueOrigin.Default &&
                source.Headers != null)
            {
                this.Headers.Copy(source.Headers);
            }
            if (properties[ConfigurationStrings.Identity].ValueOrigin != PropertyValueOrigin.Default &&
                source.Identity != null)
            {
                this.Identity.Copy(source.Identity);
            }
            if (properties[ConfigurationStrings.Kind].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Kind = source.Kind;
            }
            if (properties[ConfigurationStrings.EndpointConfiguration].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.EndpointConfiguration = source.EndpointConfiguration;
            }
        }
        internal void ApplyConfiguration(X509CertificateRecipientServiceCredential cert)
        {
            if (cert == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("cert");
            }
            PropertyInformationCollection properties = base.ElementInformation.Properties;

            if (((properties["storeLocation"].ValueOrigin != PropertyValueOrigin.Default) || (properties["storeName"].ValueOrigin != PropertyValueOrigin.Default)) || ((properties["x509FindType"].ValueOrigin != PropertyValueOrigin.Default) || (properties["findValue"].ValueOrigin != PropertyValueOrigin.Default)))
            {
                cert.SetCertificate(this.StoreLocation, this.StoreName, this.X509FindType, this.FindValue);
            }
        }
Example #19
0
        private EndpointIdentity GetIdentity(IdentityElement element)
        {
            EndpointIdentity result = null;
            PropertyInformationCollection properties = element.ElementInformation.Properties;

            if (properties == null)
            {
                throw new ArgumentNullException("获取终结点标识属性错误");
            }
            var propertyInformation = properties["userPrincipalName"];

            if (propertyInformation != null && propertyInformation.ValueOrigin != PropertyValueOrigin.Default)
            {
                return(EndpointIdentity.CreateUpnIdentity(element.UserPrincipalName.Value));
            }
            var information = properties["servicePrincipalName"];

            if (information != null && information.ValueOrigin != PropertyValueOrigin.Default)
            {
                return(EndpointIdentity.CreateSpnIdentity(element.ServicePrincipalName.Value));
            }
            var propertyInformation1 = properties["dns"];

            if (propertyInformation1 != null && propertyInformation1.ValueOrigin != PropertyValueOrigin.Default)
            {
                return(EndpointIdentity.CreateDnsIdentity(element.Dns.Value));
            }
            var information1 = properties["rsa"];

            if (information1 != null && information1.ValueOrigin != PropertyValueOrigin.Default)
            {
                return(EndpointIdentity.CreateRsaIdentity(element.Rsa.Value));
            }
            var propertyInformation2 = properties["certificate"];

            if (propertyInformation2 != null && propertyInformation2.ValueOrigin == PropertyValueOrigin.Default)
            {
                return(null);
            }
            X509Certificate2Collection x509Certificate2Collection = new X509Certificate2Collection();

            x509Certificate2Collection.Import(Convert.FromBase64String(element.Certificate.EncodedValue));
            if (x509Certificate2Collection.Count == 0)
            {
                throw new InvalidOperationException("UnableToLoadCertificateIdentity");
            }
            X509Certificate2 primaryCertificate = x509Certificate2Collection[0];

            x509Certificate2Collection.RemoveAt(0);
            return(EndpointIdentity.CreateX509CertificateIdentity(primaryCertificate, x509Certificate2Collection));
        }
Example #20
0
        public override void ApplyConfiguration(BindingElement bindingElement)
        {
            base.ApplyConfiguration(bindingElement);
            OneWayBindingElement          oneWayBindingElement = (OneWayBindingElement)bindingElement;
            PropertyInformationCollection propertyInfo         = this.ElementInformation.Properties;

            if (propertyInfo[ConfigurationStrings.ChannelPoolSettings].ValueOrigin != PropertyValueOrigin.Default)
            {
#pragma warning suppress 56506 // Microsoft, base.ApplyConfiguration() validates the argument
                this.ChannelPoolSettings.ApplyConfiguration(oneWayBindingElement.ChannelPoolSettings);
            }
            oneWayBindingElement.MaxAcceptedChannels = this.MaxAcceptedChannels;
            oneWayBindingElement.PacketRoutable      = this.PacketRoutable;
        }
Example #21
0
        internal void ApplyConfiguration(IssuedTokenServiceCredential issuedToken)
        {
            if (issuedToken == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("issuedToken");
            }
            issuedToken.CertificateValidationMode = this.CertificateValidationMode;
            issuedToken.RevocationMode            = this.RevocationMode;
            issuedToken.TrustedStoreLocation      = this.TrustedStoreLocation;
            issuedToken.AudienceUriMode           = this.AudienceUriMode;
            if (!string.IsNullOrEmpty(this.CustomCertificateValidatorType))
            {
                Type type = System.Type.GetType(this.CustomCertificateValidatorType, true);
                if (!typeof(X509CertificateValidator).IsAssignableFrom(type))
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(
                                                                                  SR.GetString(SR.ConfigInvalidCertificateValidatorType, this.CustomCertificateValidatorType, typeof(X509CertificateValidator).ToString())));
                }
                issuedToken.CustomCertificateValidator = (X509CertificateValidator)Activator.CreateInstance(type);
            }
            if (!string.IsNullOrEmpty(this.SamlSerializerType))
            {
                Type type = System.Type.GetType(this.SamlSerializerType, true);
                if (!typeof(SamlSerializer).IsAssignableFrom(type))
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(
                                                                                  SR.GetString(SR.ConfigInvalidSamlSerializerType, this.SamlSerializerType, typeof(SamlSerializer).ToString())));
                }
                issuedToken.SamlSerializer = (SamlSerializer)Activator.CreateInstance(type);
            }
            PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;

            if (propertyInfo[ConfigurationStrings.KnownCertificates].ValueOrigin != PropertyValueOrigin.Default)
            {
                foreach (X509CertificateTrustedIssuerElement src in this.KnownCertificates)
                {
                    issuedToken.KnownCertificates.Add(SecurityUtils.GetCertificateFromStore(src.StoreName, src.StoreLocation, src.X509FindType, src.FindValue, null));
                }
            }

            if (propertyInfo[ConfigurationStrings.AllowedAudienceUris].ValueOrigin != PropertyValueOrigin.Default)
            {
                foreach (AllowedAudienceUriElement src in this.AllowedAudienceUris)
                {
                    issuedToken.AllowedAudienceUris.Add(src.AllowedAudienceUri);
                }
            }

            issuedToken.AllowUntrustedRsaIssuers = this.AllowUntrustedRsaIssuers;
        }
        internal void Copy(AddressHeaderCollectionElement source)
        {
            if (source == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("source");
            }

            PropertyInformationCollection properties = source.ElementInformation.Properties;

            if (properties[ConfigurationStrings.Headers].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Headers = source.Headers;
            }
        }
        internal void Copy(ChannelEndpointElement source)
        {
            if (source == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("source");
            }
            PropertyInformationCollection properties = source.ElementInformation.Properties;

            if (properties["address"].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Address = source.Address;
            }
            if (properties["behaviorConfiguration"].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.BehaviorConfiguration = source.BehaviorConfiguration;
            }
            if (properties["binding"].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Binding = source.Binding;
            }
            if (properties["bindingConfiguration"].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.BindingConfiguration = source.BindingConfiguration;
            }
            if (properties["name"].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Name = source.Name;
            }
            if (properties["contract"].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Contract = source.Contract;
            }
            if ((properties["headers"].ValueOrigin != PropertyValueOrigin.Default) && (source.Headers != null))
            {
                this.Headers.Copy(source.Headers);
            }
            if ((properties["identity"].ValueOrigin != PropertyValueOrigin.Default) && (source.Identity != null))
            {
                this.Identity.Copy(source.Identity);
            }
            if (properties["kind"].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Kind = source.Kind;
            }
            if (properties["endpointConfiguration"].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.EndpointConfiguration = source.EndpointConfiguration;
            }
        }
Example #24
0
        public override void CopyFrom(ServiceModelExtensionElement from)
        {
            base.CopyFrom(from);

            OneWayElement source = (OneWayElement)from;

#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
            PropertyInformationCollection propertyInfo = source.ElementInformation.Properties;
            if (propertyInfo[ConfigurationStrings.ChannelPoolSettings].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.ChannelPoolSettings.CopyFrom(source.ChannelPoolSettings);
            }
            this.MaxAcceptedChannels = source.MaxAcceptedChannels;
            this.PacketRoutable      = source.PacketRoutable;
        }
        public override void ApplyConfiguration(BindingElement bindingElement)
        {
            base.ApplyConfiguration(bindingElement);
#pragma warning suppress 56506 // [....], base.ApplyConfiguration() validates the argument
            TcpTransportBindingElement    binding      = (TcpTransportBindingElement)bindingElement;
            PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;
            if (this.ListenBacklog != TcpTransportDefaults.ListenBacklogConst)
            {
                binding.ListenBacklog = this.ListenBacklog;
            }
            binding.PortSharingEnabled = this.PortSharingEnabled;
            binding.TeredoEnabled      = this.TeredoEnabled;
#pragma warning suppress 56506 // [....], base.ApplyConfiguration() validates the argument
            this.ConnectionPoolSettings.ApplyConfiguration(binding.ConnectionPoolSettings);
            binding.ExtendedProtectionPolicy = ChannelBindingUtility.BuildPolicy(this.ExtendedProtectionPolicy);
        }
        internal void ApplyConfiguration(PeerCredential cert)
        {
            if (cert == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("cert");
            }
            PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;

            if (propertyInfo[ConfigurationStrings.StoreLocation].ValueOrigin != PropertyValueOrigin.Default ||
                propertyInfo[ConfigurationStrings.StoreName].ValueOrigin != PropertyValueOrigin.Default ||
                propertyInfo[ConfigurationStrings.X509FindType].ValueOrigin != PropertyValueOrigin.Default ||
                propertyInfo[ConfigurationStrings.FindValue].ValueOrigin != PropertyValueOrigin.Default)
            {
                cert.SetCertificate(this.StoreLocation, this.StoreName, this.X509FindType, this.FindValue);
            }
        }
Example #27
0
        /// <summary>
        /// Заполнить хмл значениями из объекта
        /// </summary>
        /// <param name="obj">Элемент конфигурации</param>
        /// <param name="element">Элемент Хмл</param>
        /// <param name="propertyInformations">Список свойств элемента конфигурации</param>
        private void FillXmlFromSection(ConfigurationElement obj, XElement element, PropertyInformationCollection propertyInformations = null)
        {
            obj.ThrowIfNull();

            if (propertyInformations == null)
            {
                propertyInformations = obj.ElementInformation.Properties;
            }

            var properties = obj.GetType().GetProperties();

            foreach (PropertyInformation propertyInformation in propertyInformations)
            {
                //поиск в свойствах объекта
                var property = GetPropertyByName(properties, propertyInformation.Name);
                if (property == null)
                {
                    continue;
                }

                var value = property.GetValue(obj, null);
                if (value == null)
                {
                    continue;
                }

                //если это вложенный элемент
                var configElement = value as ConfigurationElement;
                if (configElement != null)
                {
                    var childElement = GetChildElementByName(element, propertyInformation.Name);
                    if (childElement != null)
                    {
                        childElement.Remove();
                    }

                    childElement = AddElementToElementIfNotExist(element, propertyInformation.Name);

                    FillXmlFromSection(configElement, childElement);
                }
                //если это атрибут
                else
                {
                    ModifyAttributeToElement(element, propertyInformation.Name, value);
                }
            }
        }
        internal void ApplyConfiguration(X509CertificateRecipientClientCredential creds)
        {
            if (creds == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("creds");
            }
            PropertyInformationCollection propertyInfo = this.ElementInformation.Properties;

            if (propertyInfo[ConfigurationStrings.TargetUri].ValueOrigin != PropertyValueOrigin.Default ||
                propertyInfo[ConfigurationStrings.StoreLocation].ValueOrigin != PropertyValueOrigin.Default ||
                propertyInfo[ConfigurationStrings.StoreName].ValueOrigin != PropertyValueOrigin.Default ||
                propertyInfo[ConfigurationStrings.X509FindType].ValueOrigin != PropertyValueOrigin.Default ||
                propertyInfo[ConfigurationStrings.FindValue].ValueOrigin != PropertyValueOrigin.Default)
            {
                creds.SetScopedCertificate(this.StoreLocation, this.StoreName, this.X509FindType, this.FindValue, this.TargetUri);
            }
        }
        internal void ApplyConfiguration(X509CertificateInitiatorServiceCredential cert)
        {
            if (cert == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("cert");
            }
            PropertyInformationCollection properties = base.ElementInformation.Properties;

            if (properties["authentication"].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Authentication.ApplyConfiguration(cert.Authentication);
            }
            if (properties["certificate"].ValueOrigin != PropertyValueOrigin.Default)
            {
                this.Certificate.ApplyConfiguration(cert);
            }
        }
        private void Validate()
        {
            PropertyInformationCollection properties = base.ElementInformation.Properties;

            if ((properties["index"].ValueOrigin == PropertyValueOrigin.Default) && (properties["type"].ValueOrigin == PropertyValueOrigin.Default))
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(System.Runtime.Serialization.SR.GetString("ConfigMustSetTypeOrIndex")));
            }
            if ((properties["index"].ValueOrigin != PropertyValueOrigin.Default) && (properties["type"].ValueOrigin != PropertyValueOrigin.Default))
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(System.Runtime.Serialization.SR.GetString("ConfigMustOnlySetTypeOrIndex")));
            }
            if ((properties["index"].ValueOrigin != PropertyValueOrigin.Default) && (this.Parameters.Count > 0))
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(System.Runtime.Serialization.SR.GetString("ConfigMustOnlyAddParamsWithType")));
            }
        }