Exemplo n.º 1
0
        [Category("NotWorking")]          // transport security
        public void DefaultValuesSecurityModeTransport()
        {
            WSFederationHttpBinding b = new WSFederationHttpBinding(WSFederationHttpSecurityMode.TransportWithMessageCredential);

            // common tests.
            DefaultValues(b, "https");

            // WSFederationHttpSecurity
            WSFederationHttpSecurity sec = b.Security;

            Assert.IsNotNull(sec, "#2-1");
            Assert.AreEqual(WSFederationHttpSecurityMode.TransportWithMessageCredential, sec.Mode, "#2-2");
            // Security.Message
            FederatedMessageSecurityOverHttp msg = sec.Message;

            Assert.IsNotNull(msg, "#2-3");
            Assert.AreEqual(SecurityAlgorithmSuite.Default,
                            msg.AlgorithmSuite, "#2-3-2");
            Assert.AreEqual(SecurityKeyType.SymmetricKey,
                            msg.IssuedKeyType, "#2-3-3");
            Assert.AreEqual(true, msg.NegotiateServiceCredential, "#2-3-4");

            // Binding elements
            BindingElementCollection bec = b.CreateBindingElements();

            Assert.AreEqual(4, bec.Count, "#5-1");
            Assert.AreEqual(typeof(TransactionFlowBindingElement),
                            bec [0].GetType(), "#5-2");
            Assert.AreEqual(typeof(TransportSecurityBindingElement),
                            bec [1].GetType(), "#5-3");
            Assert.AreEqual(typeof(TextMessageEncodingBindingElement),
                            bec [2].GetType(), "#5-4");
            Assert.AreEqual(typeof(HttpsTransportBindingElement),
                            bec [3].GetType(), "#5-5");
        }
 internal void InitializeFrom(WSFederationHttpSecurity security)
 {
     if (security == null)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("security");
     }
     this.Mode = security.Mode;
     this.Message.InitializeFrom(security.Message);
 }
 internal void ApplyConfiguration(WSFederationHttpSecurity security)
 {
     if (security == null)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("security");
     }
     security.Mode = this.Mode;
     this.Message.ApplyConfiguration(security.Message);
 }
 internal void InitializeFrom(WSFederationHttpSecurity security)
 {
     if (security == null)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("security");
     }
     SetPropertyValueIfNotDefaultValue(ConfigurationStrings.Mode, security.Mode);
     this.Message.InitializeFrom(security.Message);
 }
Exemplo n.º 5
0
 internal void ApplyConfiguration(WSFederationHttpSecurity security)
 {
     security.Mode = Mode;
     Message.ApplyConfiguration(security.Message);
 }
Exemplo n.º 6
0
        public static List <WS2007FederationHttpBinding> Get07FederationHttpBindings(string exeConfigPath)
        {
            if (string.IsNullOrWhiteSpace(exeConfigPath))
            {
                return(null);
            }

            var svcSection     = Read.Config.ExeConfig.GetServiceModelSection(exeConfigPath);
            var defaultTimeout = new TimeSpan(0, 0, 60);
            var configs        = new List <WS2007FederationHttpBinding>();
            var dfltb          = new WS2007FederationHttpBinding();

            foreach (
                var section in
                svcSection.Bindings.WS2007FederationHttpBinding.ConfiguredBindings
                .Cast <WS2007FederationHttpBindingElement>())
            {
                var binding = new WS2007FederationHttpBinding
                {
                    Name           = section.Name,
                    CloseTimeout   = section.CloseTimeout != TimeSpan.Zero ? section.CloseTimeout : defaultTimeout,
                    OpenTimeout    = section.OpenTimeout != TimeSpan.Zero ? section.OpenTimeout : defaultTimeout,
                    SendTimeout    = section.SendTimeout != TimeSpan.Zero ? section.SendTimeout : defaultTimeout,
                    ReceiveTimeout =
                        section.ReceiveTimeout != TimeSpan.Zero ? section.ReceiveTimeout : defaultTimeout,
                    BypassProxyOnLocal     = section.BypassProxyOnLocal,
                    TransactionFlow        = section.TransactionFlow,
                    HostNameComparisonMode = section.HostNameComparisonMode,

                    MaxReceivedMessageSize =
                        section.MaxReceivedMessageSize > 0
                            ? section.MaxReceivedMessageSize
                            : dfltb.MaxReceivedMessageSize,
                    MaxBufferPoolSize =
                        section.MaxBufferPoolSize > 0 ? section.MaxBufferPoolSize : dfltb.MaxBufferPoolSize,
                    MessageEncoding    = section.MessageEncoding,
                    TextEncoding       = section.TextEncoding ?? dfltb.TextEncoding,
                    UseDefaultWebProxy = section.UseDefaultWebProxy,
                };
                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;
                }
                if (readerQuotas != null)
                {
                    binding.ReaderQuotas = readerQuotas;
                }

                if (section.Security == null)
                {
                    configs.Add(binding);
                    continue;
                }

                var cfgSecurityMsg = section.Security.Message;
                if (cfgSecurityMsg == null)
                {
                    configs.Add(binding);
                    continue;
                }

                var security = new WSFederationHttpSecurity
                {
                    Mode    = section.Security.Mode,
                    Message = new FederatedMessageSecurityOverHttp
                    {
                        EstablishSecurityContext = cfgSecurityMsg.EstablishSecurityContext,
                    }
                };
                var wsSecurityMsg = security.Message;



                if (cfgSecurityMsg.IssuerMetadata?.Address != null)
                {
                    wsSecurityMsg.IssuerMetadataAddress = new EndpointAddress(cfgSecurityMsg.IssuerMetadata.Address);
                }

                if (!string.IsNullOrWhiteSpace(cfgSecurityMsg.IssuedTokenType))
                {
                    wsSecurityMsg.IssuedTokenType = cfgSecurityMsg.IssuedTokenType;
                }

                if (cfgSecurityMsg.Issuer?.Address != null)
                {
                    wsSecurityMsg.IssuerAddress = new EndpointAddress(cfgSecurityMsg.Issuer.Address);
                }

                if (cfgSecurityMsg.ClaimTypeRequirements != null && cfgSecurityMsg.ClaimTypeRequirements.Count > 0)
                {
                    foreach (var ctr in cfgSecurityMsg.ClaimTypeRequirements.Cast <ClaimTypeElement>())
                    {
                        wsSecurityMsg.ClaimTypeRequirements.Add(new ClaimTypeRequirement(ctr.ClaimType, ctr.IsOptional));
                    }
                }

                binding.Security = security;

                configs.Add(binding);
            }

            return(configs);
        }