internal static bool TryCreate(SecurityBindingElement sbe, out MessageSecurityOverMsmq messageSecurity) { MessageCredentialType none; messageSecurity = null; if (sbe == null) { return false; } SymmetricSecurityBindingElement element = sbe as SymmetricSecurityBindingElement; if (element == null) { return false; } if ((sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10) && (sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11)) { return false; } if (element.IncludeTimestamp) { return false; } bool flag = false; if (SecurityBindingElement.IsAnonymousForCertificateBinding(sbe)) { none = MessageCredentialType.None; } else if (SecurityBindingElement.IsUserNameForCertificateBinding(sbe)) { none = MessageCredentialType.UserName; } else if (SecurityBindingElement.IsMutualCertificateBinding(sbe)) { none = MessageCredentialType.Certificate; } else if (SecurityBindingElement.IsKerberosBinding(sbe)) { none = MessageCredentialType.Windows; flag = true; } else { IssuedSecurityTokenParameters parameters; if (!SecurityBindingElement.IsIssuedTokenForCertificateBinding(sbe, out parameters)) { return false; } if (!IssuedSecurityTokenParameters.IsInfoCardParameters(parameters, new SecurityStandardsManager(sbe.MessageSecurityVersion, new WSSecurityTokenSerializer(sbe.MessageSecurityVersion.SecurityVersion, sbe.MessageSecurityVersion.TrustVersion, sbe.MessageSecurityVersion.SecureConversationVersion, true, null, null, null)))) { return false; } none = MessageCredentialType.IssuedToken; } messageSecurity = new MessageSecurityOverMsmq(); messageSecurity.ClientCredentialType = none; if ((none != MessageCredentialType.IssuedToken) && !flag) { messageSecurity.AlgorithmSuite = element.DefaultAlgorithmSuite; } return true; }
NetMsmqSecurity(NetMsmqSecurityMode mode, MsmqTransportSecurity transportSecurity, MessageSecurityOverMsmq messageSecurity) { Fx.Assert(NetMsmqSecurityModeHelper.IsDefined(mode), string.Format("Invalid NetMsmqSecurityMode value: {0}.", mode.ToString())); this.mode = mode; this.transportSecurity = transportSecurity == null ? new MsmqTransportSecurity() : transportSecurity; this.messageSecurity = messageSecurity == null ? new MessageSecurityOverMsmq() : messageSecurity; }
internal void InitializeFrom(MessageSecurityOverMsmq security) { if (security == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("security"); } SetPropertyValueIfNotDefaultValue(ConfigurationStrings.ClientCredentialType, security.ClientCredentialType); if (security.WasAlgorithmSuiteSet) { this.AlgorithmSuite = security.AlgorithmSuite; } }
// internal static bool TryCreate(SecurityBindingElement sbe, NetMsmqSecurityMode mode, out NetMsmqSecurity security) { security = null; MessageSecurityOverMsmq messageSecurity; if (!MessageSecurityOverMsmq.TryCreate(sbe, out messageSecurity)) { messageSecurity = null; } security = new NetMsmqSecurity(mode, null, messageSecurity); return(sbe == null || Config.SecurityElement.AreBindingsMatching(security.CreateMessageSecurity(), sbe, false)); }
internal void ApplyConfiguration(MessageSecurityOverMsmq security) { if (security == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("security"); } security.ClientCredentialType = this.ClientCredentialType; if (PropertyValueOrigin.Default != this.ElementInformation.Properties[ConfigurationStrings.AlgorithmSuite].ValueOrigin) { security.AlgorithmSuite = this.AlgorithmSuite; } }
internal void InitializeFrom(MessageSecurityOverMsmq security) { if (security == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("security"); } this.ClientCredentialType = security.ClientCredentialType; if (security.WasAlgorithmSuiteSet) { this.AlgorithmSuite = security.AlgorithmSuite; } }
internal static bool TryCreate(SecurityBindingElement sbe, NetMsmqSecurityMode mode, out NetMsmqSecurity security) { MessageSecurityOverMsmq msmq; security = null; if (!MessageSecurityOverMsmq.TryCreate(sbe, out msmq)) { msmq = null; } security = new NetMsmqSecurity(mode, null, msmq); if (sbe != null) { return(SecurityElementBase.AreBindingsMatching(security.CreateMessageSecurity(), sbe, false)); } return(true); }
internal static bool TryCreate(SecurityBindingElement sbe, out MessageSecurityOverMsmq messageSecurity) { messageSecurity = null; if (sbe == null) return false; SymmetricSecurityBindingElement ssbe = sbe as SymmetricSecurityBindingElement; if (ssbe == null) return false; if (sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10 && sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11) { return false; } // do not check local settings: sbe.LocalServiceSettings and sbe.LocalClientSettings if (ssbe.IncludeTimestamp) return false; bool isKerberosSelected = false; MessageCredentialType clientCredentialType; IssuedSecurityTokenParameters issuedParameters; if (SecurityBindingElement.IsAnonymousForCertificateBinding(sbe)) { clientCredentialType = MessageCredentialType.None; } else if (SecurityBindingElement.IsUserNameForCertificateBinding(sbe)) { clientCredentialType = MessageCredentialType.UserName; } else if (SecurityBindingElement.IsMutualCertificateBinding(sbe)) { clientCredentialType = MessageCredentialType.Certificate; } else if (SecurityBindingElement.IsKerberosBinding(sbe)) { clientCredentialType = MessageCredentialType.Windows; isKerberosSelected = true; } else if (SecurityBindingElement.IsIssuedTokenForCertificateBinding(sbe, out issuedParameters)) { if (!IssuedSecurityTokenParameters.IsInfoCardParameters( issuedParameters, new SecurityStandardsManager( sbe.MessageSecurityVersion, new WSSecurityTokenSerializer( sbe.MessageSecurityVersion.SecurityVersion, sbe.MessageSecurityVersion.TrustVersion, sbe.MessageSecurityVersion.SecureConversationVersion, true, null, null, null)))) return false; clientCredentialType = MessageCredentialType.IssuedToken; } else { return false; } messageSecurity = new MessageSecurityOverMsmq(); messageSecurity.ClientCredentialType = clientCredentialType; // set the algorithm suite and issued token params if required if (clientCredentialType != MessageCredentialType.IssuedToken && !isKerberosSelected) { messageSecurity.AlgorithmSuite = ssbe.DefaultAlgorithmSuite; } return true; }
private NetMsmqSecurity(NetMsmqSecurityMode mode, MsmqTransportSecurity transportSecurity, MessageSecurityOverMsmq messageSecurity) { this.mode = mode; this.transportSecurity = (transportSecurity == null) ? new MsmqTransportSecurity() : transportSecurity; this.messageSecurity = (messageSecurity == null) ? new MessageSecurityOverMsmq() : messageSecurity; }
// internal static bool TryCreate(SecurityBindingElement sbe, NetMsmqSecurityMode mode, out NetMsmqSecurity security) { security = null; MessageSecurityOverMsmq messageSecurity; if (!MessageSecurityOverMsmq.TryCreate(sbe, out messageSecurity)) messageSecurity = null; security = new NetMsmqSecurity(mode, null, messageSecurity); return sbe == null || Config.SecurityElement.AreBindingsMatching(security.CreateMessageSecurity(), sbe, false); }
public static List<NetMsmqBinding> GetNetMsmqBindings(string exeConfigPath) { var svcSection = Read.Config.ExeConfig.GetServiceModelSection(exeConfigPath); var configs = new List<NetMsmqBinding>(); foreach ( var section in svcSection.Bindings.NetMsmqBinding.ConfiguredBindings .Cast<NetMsmqBindingElement>()) { var df = new NetMsmqBinding(); var binding = new NetMsmqBinding { Name = section.Name, MaxBufferPoolSize = section.MaxBufferPoolSize > 0 ? section.MaxBufferPoolSize : df.MaxBufferPoolSize, MaxReceivedMessageSize = section.MaxReceivedMessageSize > 0 ? section.MaxReceivedMessageSize : df.MaxReceivedMessageSize, CloseTimeout = section.CloseTimeout != TimeSpan.Zero ? section.CloseTimeout : df.CloseTimeout, OpenTimeout = section.OpenTimeout != TimeSpan.Zero ? section.OpenTimeout : df.OpenTimeout, SendTimeout = section.SendTimeout != TimeSpan.Zero ? section.SendTimeout : df.SendTimeout, ReceiveTimeout = section.ReceiveTimeout != TimeSpan.Zero ? section.ReceiveTimeout : df.ReceiveTimeout, MaxRetryCycles = section.MaxRetryCycles > 0 ? section.MaxRetryCycles : df.MaxRetryCycles, ReceiveRetryCount = section.ReceiveRetryCount > 0 ? section.ReceiveRetryCount : df.ReceiveRetryCount, RetryCycleDelay = section.RetryCycleDelay != TimeSpan.Zero ? section.RetryCycleDelay : df.RetryCycleDelay, TimeToLive = section.TimeToLive != TimeSpan.Zero ? section.TimeToLive : df.TimeToLive, DeadLetterQueue = section.DeadLetterQueue, Durable = section.Durable, ExactlyOnce = section.ExactlyOnce, ReceiveErrorHandling = section.ReceiveErrorHandling, UseSourceJournal = section.UseSourceJournal, UseMsmqTracing = section.UseMsmqTracing, QueueTransferProtocol = section.QueueTransferProtocol, UseActiveDirectory = section.UseActiveDirectory }; var readerQuotasSection = section.ReaderQuotas; var readerQuotas = new System.Xml.XmlDictionaryReaderQuotas(); if (readerQuotasSection != null && readerQuotasSection.MaxDepth > 0) { readerQuotas.MaxDepth = readerQuotasSection.MaxDepth; readerQuotas.MaxStringContentLength = readerQuotasSection.MaxStringContentLength; readerQuotas.MaxArrayLength = readerQuotasSection.MaxArrayLength; readerQuotas.MaxBytesPerRead = readerQuotasSection.MaxBytesPerRead; readerQuotas.MaxNameTableCharCount = readerQuotasSection.MaxNameTableCharCount; } else { readerQuotas = null; } var msmqSecurity = new NetMsmqSecurity {Mode = section.Security.Mode}; var securityTransportSection = section.Security.Transport; var msmqSecurityTransport = new MsmqTransportSecurity { MsmqAuthenticationMode = securityTransportSection.MsmqAuthenticationMode, MsmqEncryptionAlgorithm = securityTransportSection.MsmqEncryptionAlgorithm, MsmqProtectionLevel = securityTransportSection.MsmqProtectionLevel, MsmqSecureHashAlgorithm = securityTransportSection.MsmqSecureHashAlgorithm }; var msmqSecurityMessage = new MessageSecurityOverMsmq { ClientCredentialType = section.Security.Message.ClientCredentialType }; msmqSecurity.Message = msmqSecurityMessage; msmqSecurity.Transport = msmqSecurityTransport; binding.Security = msmqSecurity; if (readerQuotas != null) { binding.ReaderQuotas = readerQuotas; } configs.Add(binding); } return configs; }
internal static bool TryCreate(SecurityBindingElement sbe, out MessageSecurityOverMsmq messageSecurity) { MessageCredentialType none; messageSecurity = null; if (sbe == null) { return(false); } SymmetricSecurityBindingElement element = sbe as SymmetricSecurityBindingElement; if (element == null) { return(false); } if ((sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10) && (sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11)) { return(false); } if (element.IncludeTimestamp) { return(false); } bool flag = false; if (SecurityBindingElement.IsAnonymousForCertificateBinding(sbe)) { none = MessageCredentialType.None; } else if (SecurityBindingElement.IsUserNameForCertificateBinding(sbe)) { none = MessageCredentialType.UserName; } else if (SecurityBindingElement.IsMutualCertificateBinding(sbe)) { none = MessageCredentialType.Certificate; } else if (SecurityBindingElement.IsKerberosBinding(sbe)) { none = MessageCredentialType.Windows; flag = true; } else { IssuedSecurityTokenParameters parameters; if (!SecurityBindingElement.IsIssuedTokenForCertificateBinding(sbe, out parameters)) { return(false); } if (!IssuedSecurityTokenParameters.IsInfoCardParameters(parameters, new SecurityStandardsManager(sbe.MessageSecurityVersion, new WSSecurityTokenSerializer(sbe.MessageSecurityVersion.SecurityVersion, sbe.MessageSecurityVersion.TrustVersion, sbe.MessageSecurityVersion.SecureConversationVersion, true, null, null, null)))) { return(false); } none = MessageCredentialType.IssuedToken; } messageSecurity = new MessageSecurityOverMsmq(); messageSecurity.ClientCredentialType = none; if ((none != MessageCredentialType.IssuedToken) && !flag) { messageSecurity.AlgorithmSuite = element.DefaultAlgorithmSuite; } return(true); }
internal static bool TryCreate(SecurityBindingElement sbe, out MessageSecurityOverMsmq messageSecurity) { messageSecurity = null; if (sbe == null) { return(false); } SymmetricSecurityBindingElement ssbe = sbe as SymmetricSecurityBindingElement; if (ssbe == null) { return(false); } if (sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10 && sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11) { return(false); } // do not check local settings: sbe.LocalServiceSettings and sbe.LocalClientSettings if (ssbe.IncludeTimestamp) { return(false); } bool isKerberosSelected = false; MessageCredentialType clientCredentialType; IssuedSecurityTokenParameters issuedParameters; if (SecurityBindingElement.IsAnonymousForCertificateBinding(sbe)) { clientCredentialType = MessageCredentialType.None; } else if (SecurityBindingElement.IsUserNameForCertificateBinding(sbe)) { clientCredentialType = MessageCredentialType.UserName; } else if (SecurityBindingElement.IsMutualCertificateBinding(sbe)) { clientCredentialType = MessageCredentialType.Certificate; } else if (SecurityBindingElement.IsKerberosBinding(sbe)) { clientCredentialType = MessageCredentialType.Windows; isKerberosSelected = true; } else if (SecurityBindingElement.IsIssuedTokenForCertificateBinding(sbe, out issuedParameters)) { if (!IssuedSecurityTokenParameters.IsInfoCardParameters( issuedParameters, new SecurityStandardsManager( sbe.MessageSecurityVersion, new WSSecurityTokenSerializer( sbe.MessageSecurityVersion.SecurityVersion, sbe.MessageSecurityVersion.TrustVersion, sbe.MessageSecurityVersion.SecureConversationVersion, true, null, null, null)))) { return(false); } clientCredentialType = MessageCredentialType.IssuedToken; } else { return(false); } messageSecurity = new MessageSecurityOverMsmq(); messageSecurity.ClientCredentialType = clientCredentialType; // set the algorithm suite and issued token params if required if (clientCredentialType != MessageCredentialType.IssuedToken && !isKerberosSelected) { messageSecurity.AlgorithmSuite = ssbe.DefaultAlgorithmSuite; } return(true); }