public static SecurityBindingElement BuildMessageSecurity(MessageSecurityType securityType) { if (securityType == MessageSecurityType.CertificateOverTransport) { TransportSecurityBindingElement messageSecurity = SecurityBindingElement.CreateCertificateOverTransportBindingElement( MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11); messageSecurity.IncludeTimestamp = true; return(messageSecurity); } else if (securityType == MessageSecurityType.MutualCertificate) { SecurityBindingElement messageSecurity = SecurityBindingElement.CreateMutualCertificateBindingElement( MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10, true); messageSecurity.DefaultAlgorithmSuite = System.ServiceModel.Security.SecurityAlgorithmSuite.Basic128Rsa15; messageSecurity.IncludeTimestamp = true; return(messageSecurity); } else if (securityType == MessageSecurityType.None) { return(null); } else if (securityType == MessageSecurityType.UserNameOverTransport) { TransportSecurityBindingElement messageSecurity = SecurityBindingElement.CreateUserNameOverTransportBindingElement(); messageSecurity.IncludeTimestamp = false; messageSecurity.EnableUnsecuredResponse = true; messageSecurity.DefaultAlgorithmSuite = System.ServiceModel.Security.Basic256SecurityAlgorithmSuite.Basic256; messageSecurity.SetKeyDerivation(false); messageSecurity.MessageSecurityVersion = MessageSecurityVersion.WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10; return(messageSecurity); } return(SecurityBindingElement.CreateSslNegotiationBindingElement(false)); }
internal MessageTypeEntry(MessageType type, MessageFlags flags, MessageSecurityType security) { this.messageType = type; this.messageFlags = flags; this.messageSecurityType = security; }
public static WSHttpBinding BuildWSHttpBinding(BindingSecurity bindingSecurity, MessageSecurityType messageSecurity, WSMessageEncoding encoding, TimeoutQuotas timeoutQuotas, MessageSizeQuotas quotas) { if (quotas == null) { quotas = new MessageSizeQuotas() { MaxBufferPoolSize = 15000000, MaxReceivedMessageSize = 15000000 }; } if (timeoutQuotas == null) { timeoutQuotas = new TimeoutQuotas() { CloseTimeout = 600000000, // 1 minute OpenTimeout = 600000000, // 1 minute ReceiveTimeout = 3000000000, // 5 minutes SendTimeout = 3000000000, // 5 minutes }; } WSHttpBinding binding_Text = new WSHttpBinding(); binding_Text.Name = "WSHttpBinding_" + encoding.ToString() + "_" + bindingSecurity.ToString(); binding_Text.CloseTimeout = new TimeSpan(timeoutQuotas.CloseTimeout); binding_Text.OpenTimeout = new TimeSpan(timeoutQuotas.OpenTimeout); binding_Text.ReceiveTimeout = new TimeSpan(timeoutQuotas.ReceiveTimeout); binding_Text.SendTimeout = new TimeSpan(timeoutQuotas.SendTimeout); binding_Text.BypassProxyOnLocal = false; binding_Text.TransactionFlow = false; binding_Text.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard; binding_Text.MaxBufferPoolSize = quotas.MaxBufferPoolSize; binding_Text.MaxReceivedMessageSize = quotas.MaxReceivedMessageSize; binding_Text.MessageEncoding = encoding; binding_Text.TextEncoding = System.Text.Encoding.UTF8; binding_Text.UseDefaultWebProxy = true; binding_Text.AllowCookies = false; binding_Text.ReaderQuotas = new XmlDictionaryReaderQuotas(); binding_Text.ReaderQuotas.MaxDepth = 32; binding_Text.ReaderQuotas.MaxStringContentLength = 81920; binding_Text.ReaderQuotas.MaxArrayLength = 16384; binding_Text.ReaderQuotas.MaxBytesPerRead = 32768; binding_Text.ReaderQuotas.MaxNameTableCharCount = 16384000; System.ServiceModel.Channels.ReliableSessionBindingElement reliableSessionBindingElement = new System.ServiceModel.Channels.ReliableSessionBindingElement(true); reliableSessionBindingElement.InactivityTimeout = new TimeSpan(6000000000); //10 minutes //binding_Text.ReliableSession = new OptionalReliableSession(reliableSessionBindingElement); switch (bindingSecurity) { case BindingSecurity.None: binding_Text.Security.Mode = SecurityMode.None; binding_Text.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows; binding_Text.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None; binding_Text.Security.Transport.Realm = String.Empty; //binding_Text.Security.Message.ClientCredentialType = MessageCredentialType.Windows; //binding_Text.Security.Message.NegotiateServiceCredential = true; //binding_Text.Security.Message.EstablishSecurityContext = true; break; case BindingSecurity.TLSWithCertificate: binding_Text.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate; binding_Text.Security.Mode = SecurityMode.Transport; binding_Text.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Basic; binding_Text.Security.Transport.Realm = String.Empty; break; case BindingSecurity.TLS: binding_Text.Security.Mode = SecurityMode.Transport; binding_Text.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Basic; binding_Text.Security.Transport.Realm = String.Empty; break; case BindingSecurity.Credentials: binding_Text.Security.Mode = SecurityMode.TransportWithMessageCredential; binding_Text.Security.Message.ClientCredentialType = MessageCredentialType.UserName; break; default: break; } switch (messageSecurity) { case MessageSecurityType.None: break; case MessageSecurityType.CertificateOverTransport: binding_Text.Security.Message.ClientCredentialType = MessageCredentialType.Certificate; binding_Text.Security.Message.NegotiateServiceCredential = true; binding_Text.Security.Message.EstablishSecurityContext = true; break; case MessageSecurityType.MutualCertificate: binding_Text.Security.Message.ClientCredentialType = MessageCredentialType.Certificate; binding_Text.Security.Message.NegotiateServiceCredential = true; binding_Text.Security.Message.EstablishSecurityContext = true; break; default: break; } return(binding_Text); }
public static BasicHttpBinding BuildBasicHTTPBinding(BindingSecurity bindingSecurity, MessageSecurityType messageSecurity, WSMessageEncoding encoding, TimeoutQuotas timeoutQuotas, MessageSizeQuotas sizeQuotas) { if (sizeQuotas == null) { sizeQuotas = new MessageSizeQuotas() { MaxBufferPoolSize = 15000000, MaxReceivedMessageSize = 15000000, MaxBufferSize = 15000000 }; } if (timeoutQuotas == null) { timeoutQuotas = new TimeoutQuotas() { CloseTimeout = 600000000, // 1 minute OpenTimeout = 600000000, // 1 minute ReceiveTimeout = 3000000000, // 5 minutes SendTimeout = 3000000000, // 5 minutes }; } BasicHttpBinding binding = new BasicHttpBinding(); binding.Name = "BasicHttpBinding_IPrimeSuiteService"; binding.CloseTimeout = new TimeSpan(timeoutQuotas.CloseTimeout); binding.OpenTimeout = new TimeSpan(timeoutQuotas.OpenTimeout); binding.ReceiveTimeout = new TimeSpan(timeoutQuotas.ReceiveTimeout); binding.SendTimeout = new TimeSpan(timeoutQuotas.SendTimeout); binding.AllowCookies = false; binding.BypassProxyOnLocal = false; binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard; binding.MaxBufferSize = sizeQuotas.MaxBufferSize; binding.MaxBufferPoolSize = sizeQuotas.MaxBufferPoolSize; binding.MaxReceivedMessageSize = sizeQuotas.MaxReceivedMessageSize; binding.MessageEncoding = WSMessageEncoding.Text; binding.TextEncoding = System.Text.Encoding.UTF8; binding.TransferMode = TransferMode.Buffered; binding.UseDefaultWebProxy = true; binding.ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas(); binding.ReaderQuotas.MaxDepth = 32; binding.ReaderQuotas.MaxStringContentLength = 8192; binding.ReaderQuotas.MaxArrayLength = 16384; binding.ReaderQuotas.MaxBytesPerRead = 4096; binding.ReaderQuotas.MaxNameTableCharCount = 1638400; binding.Security = new System.ServiceModel.BasicHttpSecurity(); binding.Security.Transport = new HttpTransportSecurity(); switch (bindingSecurity) { case BindingSecurity.None: binding.Security.Mode = BasicHttpSecurityMode.None; binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None; binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None; binding.Security.Transport.Realm = String.Empty; //binding_Text.Security.Message.ClientCredentialType = MessageCredentialType.Windows; //binding_Text.Security.Message.NegotiateServiceCredential = true; //binding_Text.Security.Message.EstablishSecurityContext = true; break; case BindingSecurity.TLSWithCertificate: binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate; binding.Security.Mode = BasicHttpSecurityMode.Transport; binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Basic; binding.Security.Transport.Realm = String.Empty; break; case BindingSecurity.TLS: binding.Security.Mode = BasicHttpSecurityMode.Transport; binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Basic; binding.Security.Transport.Realm = String.Empty; break; default: break; } switch (messageSecurity) { case MessageSecurityType.None: binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName; binding.Security.Message.AlgorithmSuite = System.ServiceModel.Security.SecurityAlgorithmSuite.Default; break; case MessageSecurityType.CertificateOverTransport: binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate; binding.Security.Message.AlgorithmSuite = System.ServiceModel.Security.SecurityAlgorithmSuite.Default; break; case MessageSecurityType.MutualCertificate: binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate; binding.Security.Message.AlgorithmSuite = System.ServiceModel.Security.SecurityAlgorithmSuite.Default; break; default: break; } return(binding); }
public static System.ServiceModel.Channels.Binding BuildCustomBindingSecure(MessageEncodingType encodingType, MessageSecurityType securityType, BindingSecurity transportSecurity, TimeoutQuotas timeoutQuotas, MessageSizeQuotas sizeQuotas) { if (sizeQuotas == null) { sizeQuotas = new MessageSizeQuotas() { MaxBufferPoolSize = 15000000, MaxReceivedMessageSize = 15000000, MaxBufferSize = 15000000 }; } if (timeoutQuotas == null) { timeoutQuotas = new TimeoutQuotas() { CloseTimeout = 600000000, // 1 minute OpenTimeout = 600000000, // 1 minute ReceiveTimeout = 3000000000, // 5 minutes SendTimeout = 3000000000, // 5 minutes }; } SecurityBindingElement messageSecurity = BuildMessageSecurity(securityType); MessageEncodingBindingElement messageEncodingBindingElement = BuildMessageEncoding(encodingType, sizeQuotas); HttpTransportBindingElement transportBindingElement = BuildHttpTransport(transportSecurity, sizeQuotas); if (securityType == MessageSecurityType.MutualCertificate || securityType == MessageSecurityType.CertificateOverTransport) { ((HttpsTransportBindingElement)transportBindingElement).RequireClientCertificate = true; } BindingElementCollection bindingElementCollection = new BindingElementCollection(); if (messageSecurity != null) { bindingElementCollection.Add(messageSecurity); } bindingElementCollection.Add(messageEncodingBindingElement); bindingElementCollection.Add(transportBindingElement); CustomBinding cb = new CustomBinding(bindingElementCollection); cb.ReceiveTimeout = new TimeSpan(timeoutQuotas.ReceiveTimeout); cb.CloseTimeout = new TimeSpan(timeoutQuotas.CloseTimeout); cb.OpenTimeout = new TimeSpan(timeoutQuotas.OpenTimeout); cb.SendTimeout = new TimeSpan(timeoutQuotas.SendTimeout); cb.CreateBindingElements(); return(cb); }
public static System.ServiceModel.Channels.Binding BuildCustomBindingSecure(MessageEncodingType encodingType, MessageSecurityType securityType, BindingSecurity transportSecurity) { return(BuildCustomBindingSecure(encodingType, securityType, transportSecurity, null, null)); }
public static System.ServiceModel.Channels.Binding BuildCustomBindingSecure(MessageEncodingType encodingType, MessageSecurityType securityType) { return(BuildCustomBindingSecure(encodingType, securityType, BindingSecurity.TLS)); }