Exemple #1
0
            public override Binding CreateBinding()
            {
                Binding bin;
                var     tcpBin = new NetTcpBinding();

                tcpBin.ReliableSession.InactivityTimeout = InactivityTimeout;
                tcpBin.MaxBufferPoolSize                     = MaxBufferPoolSize;
                tcpBin.MaxBufferSize                         = MaxBufferSize;
                tcpBin.MaxConnections                        = MaxConnections;
                tcpBin.MaxReceivedMessageSize                = MaxReceivedMessageSize;
                tcpBin.ReaderQuotas.MaxBytesPerRead          = ReaderQuotas_MaxBytesPerRead;
                tcpBin.ReaderQuotas.MaxStringContentLength   = ReaderQuotas_MaxStringContentLength;
                tcpBin.ReaderQuotas.MaxArrayLength           = ReaderQuotas_MaxArrayLength;
                tcpBin.Security.Mode                         = SecurityMode;
                tcpBin.Security.Message.ClientCredentialType = ClientCredentialType;
                tcpBin.TransferMode = TransferMode;
                ConfigureTcpBindingAction?.Invoke(tcpBin);
                bin = tcpBin;

                // Check if ClockSkew has default values (300 segundos)
                if (LocalClientMaxClockSkew != TimeSpan.FromMinutes(5) || LocalServiceMaxClockSkew != TimeSpan.FromMinutes(5))
                {
                    CustomBinding cusBin = new CustomBinding(tcpBin);
                    SymmetricSecurityBindingElement symetricSecurity = cusBin.Elements.Find <SymmetricSecurityBindingElement>();
                    if (symetricSecurity != null)
                    {
                        //symetricSecurity.LocalServiceSettings.DetectReplays = false;
                        //symetricSecurity.LocalClientSettings.DetectReplays = false;
                        symetricSecurity.LocalServiceSettings.MaxClockSkew = LocalServiceMaxClockSkew;
                        symetricSecurity.LocalClientSettings.MaxClockSkew  = LocalClientMaxClockSkew;
                        if (symetricSecurity.ProtectionTokenParameters is SecureConversationSecurityTokenParameters tokens)
                        {
                            //tokens.BootstrapSecurityBindingElement.LocalClientSettings.DetectReplays = false;
                            //tokens.BootstrapSecurityBindingElement.LocalServiceSettings.DetectReplays = false;
                            tokens.BootstrapSecurityBindingElement.LocalClientSettings.MaxClockSkew  = LocalClientMaxClockSkew;
                            tokens.BootstrapSecurityBindingElement.LocalServiceSettings.MaxClockSkew = LocalServiceMaxClockSkew;
                        }
                    }
                    AsymmetricSecurityBindingElement asymetricSecurity = cusBin.Elements.Find <AsymmetricSecurityBindingElement>();
                    if (asymetricSecurity != null)
                    {
                        asymetricSecurity.LocalServiceSettings.MaxClockSkew = LocalServiceMaxClockSkew;
                        asymetricSecurity.LocalClientSettings.MaxClockSkew  = LocalClientMaxClockSkew;
                        if (asymetricSecurity.InitiatorTokenParameters is SecureConversationSecurityTokenParameters tokens)
                        {
                            tokens.BootstrapSecurityBindingElement.LocalClientSettings.MaxClockSkew  = LocalClientMaxClockSkew;
                            tokens.BootstrapSecurityBindingElement.LocalServiceSettings.MaxClockSkew = LocalServiceMaxClockSkew;
                        }
                    }
                    bin = cusBin;
                }
                bin.CloseTimeout   = CloseTimeout;
                bin.OpenTimeout    = OpenTimeout;
                bin.ReceiveTimeout = ReceiveTimeout;
                bin.SendTimeout    = SendTimeout;
                return(bin);
            }
Exemple #2
0
        public override Binding CreateBinding()
        {
            Binding bin;
            var     tcpBin = new NetTcpBinding();

            tcpBin.ReliableSession.InactivityTimeout = InactivityTimeout;
            tcpBin.MaxBufferPoolSize                     = MaxBufferPoolSize;
            tcpBin.MaxBufferSize                         = MaxBufferSize;
            tcpBin.MaxConnections                        = MaxConnections;
            tcpBin.MaxReceivedMessageSize                = MaxReceivedMessageSize;
            tcpBin.ReaderQuotas.MaxBytesPerRead          = ReaderQuotas_MaxBytesPerRead;
            tcpBin.ReaderQuotas.MaxStringContentLength   = ReaderQuotas_MaxStringContentLength;
            tcpBin.ReaderQuotas.MaxArrayLength           = ReaderQuotas_MaxArrayLength;
            tcpBin.Security.Mode                         = SecurityMode;
            tcpBin.Security.Message.ClientCredentialType = ClientCredentialType;
            tcpBin.TransferMode = TransferMode;
            ConfigureTcpBindingAction?.Invoke(tcpBin);
            bin = tcpBin;

            // Check if ClockSkew has default values (300 segundos)
            if (LocalClientMaxClockSkew != TimeSpan.FromMinutes(5) || LocalServiceMaxClockSkew != TimeSpan.FromMinutes(5))
            {
                CustomBinding          cusBin   = new CustomBinding(tcpBin);
                SecurityBindingElement security = cusBin.Elements.Find <SecurityBindingElement>();
                if (security != null)
                {
                    security.LocalServiceSettings.MaxClockSkew = LocalServiceMaxClockSkew;
                    security.LocalClientSettings.MaxClockSkew  = LocalClientMaxClockSkew;
                }
                bin = cusBin;
            }
            bin.CloseTimeout   = CloseTimeout;
            bin.OpenTimeout    = OpenTimeout;
            bin.ReceiveTimeout = ReceiveTimeout;
            bin.SendTimeout    = SendTimeout;
            return(bin);
        }