Ejemplo 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");
        }
Ejemplo n.º 2
0
        public void IssueToken_CalledOnFederationBinding_CallsIssueToken()
        {
            // Arrange
            var returnToken           = MockRepository.GenerateStub <SecurityToken>();
            var mockRepository        = new MockRepository();
            var securityTokenProvider = mockRepository.PartialMock <SecurityTokenProvider>();

            securityTokenProvider.Stub(x => x.IssueToken(Arg <IWSTrustChannelContract> .Is.Anything, Arg <string> .Is.Anything, Arg <SecurityToken> .Is.Anything, Arg <SecurityToken> .Is.Anything)).Return(returnToken);
            securityTokenProvider.Replay();

            var binding = MockRepository.GenerateStub <WS2007FederationHttpBinding>();
            var messageSecurityOverHttp = new FederatedMessageSecurityOverHttp
            {
                IssuerAddress = new EndpointAddress("http://localhost/issuer"),
                IssuerBinding = new WS2007HttpBinding()
            };

            binding.Security.Message = messageSecurityOverHttp;
            var actAsToken = MockRepository.GenerateStub <SecurityToken>();

            // Act
            var actual = securityTokenProvider.IssueToken(binding, "http://localhost/service", actAsToken);

            // Assert
            securityTokenProvider.AssertWasCalled(
                x => x.IssueToken(Arg <IWSTrustChannelContract> .Is.Anything, Arg <string> .Is.Anything, Arg <SecurityToken> .Is.Anything, Arg <SecurityToken> .Is.Anything));
            Assert.AreEqual(returnToken, actual);
        }
Ejemplo n.º 3
0
 internal void ApplyConfiguration(FederatedMessageSecurityOverHttp security)
 {
     if (security == null)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("security");
     }
     security.NegotiateServiceCredential = this.NegotiateServiceCredential;
     security.AlgorithmSuite             = this.AlgorithmSuite;
     security.IssuedKeyType            = this.IssuedKeyType;
     security.EstablishSecurityContext = this.EstablishSecurityContext;
     if (!string.IsNullOrEmpty(this.IssuedTokenType))
     {
         security.IssuedTokenType = this.IssuedTokenType;
     }
     if (base.ElementInformation.Properties["issuer"].ValueOrigin != PropertyValueOrigin.Default)
     {
         security.IssuerAddress = ConfigLoader.LoadEndpointAddress(this.Issuer);
         if (!string.IsNullOrEmpty(this.Issuer.Binding))
         {
             security.IssuerBinding = ConfigLoader.LookupBinding(this.Issuer.Binding, this.Issuer.BindingConfiguration, base.EvaluationContext);
         }
     }
     if (base.ElementInformation.Properties["issuerMetadata"].ValueOrigin != PropertyValueOrigin.Default)
     {
         security.IssuerMetadataAddress = ConfigLoader.LoadEndpointAddress(this.IssuerMetadata);
     }
     foreach (XmlElementElement element in this.TokenRequestParameters)
     {
         security.TokenRequestParameters.Add(element.XmlElement);
     }
     foreach (ClaimTypeElement element2 in this.ClaimTypeRequirements)
     {
         security.ClaimTypeRequirements.Add(new ClaimTypeRequirement(element2.ClaimType, element2.IsOptional));
     }
 }
Ejemplo n.º 4
0
 // Methods
 internal void ApplyConfiguration(FederatedMessageSecurityOverHttp s)
 {
     s.AlgorithmSuite = AlgorithmSuite;
     foreach (ClaimTypeElement cte in ClaimTypeRequirements)
     {
         s.ClaimTypeRequirements.Add(cte.Create());
     }
     s.EstablishSecurityContext = EstablishSecurityContext;
     s.IssuedKeyType            = IssuedKeyType;
     s.IssuedTokenType          = IssuedTokenType;
     if (Issuer.Address != null)
     {
         s.IssuerAddress = new EndpointAddress(Issuer.Address, Issuer.Identity.Create(), Issuer.Headers.Headers);
     }
     if (!String.IsNullOrEmpty(Issuer.Binding))
     {
         s.IssuerBinding = ConfigUtil.CreateBinding(Issuer.Binding, Issuer.BindingConfiguration);
     }
     if (IssuerMetadata.Address != null)
     {
         s.IssuerMetadataAddress = new EndpointAddress(IssuerMetadata.Address, IssuerMetadata.Identity.Create(), IssuerMetadata.Headers.Headers);
     }
     s.NegotiateServiceCredential = NegotiateServiceCredential;
     foreach (XmlElementElement xee in TokenRequestParameters)
     {
         s.TokenRequestParameters.Add(xee.XmlElement);
     }
 }
Ejemplo n.º 5
0
        internal void InitializeFrom(FederatedMessageSecurityOverHttp security)
        {
            if (security == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("security");
            }
            this.NegotiateServiceCredential = security.NegotiateServiceCredential;
            this.AlgorithmSuite             = security.AlgorithmSuite;
            this.IssuedKeyType = security.IssuedKeyType;
            if (!security.EstablishSecurityContext)
            {
                this.EstablishSecurityContext = security.EstablishSecurityContext;
            }
            if (security.IssuedTokenType != null)
            {
                this.IssuedTokenType = security.IssuedTokenType;
            }
            if (security.IssuerAddress != null)
            {
                this.Issuer.InitializeFrom(security.IssuerAddress);
            }
            if (security.IssuerMetadataAddress != null)
            {
                this.IssuerMetadata.InitializeFrom(security.IssuerMetadataAddress);
            }
            string bindingSectionName = null;

            if (security.IssuerBinding != null)
            {
                if (null == this.Issuer.Address)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(System.ServiceModel.SR.GetString("ConfigNullIssuerAddress")));
                }
                this.Issuer.BindingConfiguration = this.Issuer.Address.ToString();
                BindingsSection.TryAdd(this.Issuer.BindingConfiguration, security.IssuerBinding, out bindingSectionName);
                this.Issuer.Binding = bindingSectionName;
            }
            foreach (XmlElement element in security.TokenRequestParameters)
            {
                this.TokenRequestParameters.Add(new XmlElementElement(element));
            }
            foreach (ClaimTypeRequirement requirement in security.ClaimTypeRequirements)
            {
                ClaimTypeElement element2 = new ClaimTypeElement(requirement.ClaimType, requirement.IsOptional);
                this.ClaimTypeRequirements.Add(element2);
            }
        }
Ejemplo n.º 6
0
        internal void InitializeFrom(FederatedMessageSecurityOverHttp security)
        {
            if (security == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("security");
            }
            SetPropertyValueIfNotDefaultValue(ConfigurationStrings.NegotiateServiceCredential, security.NegotiateServiceCredential);
            SetPropertyValueIfNotDefaultValue(ConfigurationStrings.AlgorithmSuite, security.AlgorithmSuite);
            SetPropertyValueIfNotDefaultValue(ConfigurationStrings.IssuedKeyType, security.IssuedKeyType);
            SetPropertyValueIfNotDefaultValue(ConfigurationStrings.EstablishSecurityContext, security.EstablishSecurityContext);
            if (security.IssuedTokenType != null)
            {
                this.IssuedTokenType = security.IssuedTokenType;
            }
            if (security.IssuerAddress != null)
            {
                this.Issuer.InitializeFrom(security.IssuerAddress);
            }
            if (security.IssuerMetadataAddress != null)
            {
                this.IssuerMetadata.InitializeFrom(security.IssuerMetadataAddress);
            }
            string bindingType = null;

            if (security.IssuerBinding != null)
            {
                if (null == this.Issuer.Address)
                {
                    throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ConfigurationErrorsException(SR.GetString(SR.ConfigNullIssuerAddress)));
                }

                this.Issuer.BindingConfiguration = this.Issuer.Address.ToString();
                BindingsSection.TryAdd(this.Issuer.BindingConfiguration,
                                       security.IssuerBinding, out bindingType);
                this.Issuer.Binding = bindingType;
            }
            foreach (XmlElement element in security.TokenRequestParameters)
            {
                this.TokenRequestParameters.Add(new XmlElementElement(element));
            }
            foreach (ClaimTypeRequirement claimTypeRequirement in security.ClaimTypeRequirements)
            {
                ClaimTypeElement element = new ClaimTypeElement(claimTypeRequirement.ClaimType, claimTypeRequirement.IsOptional);
                this.ClaimTypeRequirements.Add(element);
            }
        }