Exemple #1
0
        public void BuildAuthnRequest_test_requested_authn_context_default_overwritten_multiple_contexts()
        {
            //ARRANGE
            var requestUri = new Uri("http://localhost:59611/");
            var federationPartyContextBuilder = new FederationPartyContextBuilderMock();
            var federationContex = federationPartyContextBuilder.BuildContext("local", NameIdentifierFormats.Transient);
            var requestedAuthnContextConfiguration = new Kernel.Federation.FederationPartner.RequestedAuthnContextConfiguration(AuthnContextComparisonType.Minimum.ToString());

            requestedAuthnContextConfiguration.RequestedAuthnContexts.Add((new Kernel.Federation.Protocols.AuthnContext(AuthnContextType.AuthnContextClassRef.ToString(), new Uri(AuthnticationContexts.Password))));
            requestedAuthnContextConfiguration.RequestedAuthnContexts.Add((new Kernel.Federation.Protocols.AuthnContext(AuthnContextType.AuthnContextClassRef.ToString(), new Uri(AuthnticationContexts.PasswordProtectedTransport))));
            var federationPartyAuthnRequestConfiguration = new FederationPartyAuthnRequestConfiguration(requestedAuthnContextConfiguration, new DefaultNameId(new Uri(NameIdentifierFormats.Transient)));

            federationContex.FederationPartyAuthnRequestConfiguration = federationPartyAuthnRequestConfiguration;

            var supportedNameIdentifierFormats = new List <Uri> {
                new Uri(NameIdentifierFormats.Transient)
            };
            var authnRequestContext  = new AuthnRequestContext(requestUri, federationContex, supportedNameIdentifierFormats);
            var requestConfiguration = federationContex.GetRequestConfigurationFromContext();

            AuthnRequestHelper.GetBuilders = AuthnRequestBuildersFactoryMock.GetBuildersFactory();
            //ACT
            var authnRequest = AuthnRequestHelper.BuildAuthnRequest(authnRequestContext);

            //ASSERT
            Assert.NotNull(authnRequest);
            Assert.IsNotNull(authnRequest.RequestedAuthnContext);
            Assert.AreEqual(AuthnContextComparisonType.Minimum, authnRequest.RequestedAuthnContext.Comparison);
            Assert.AreEqual(2, authnRequest.RequestedAuthnContext.Items.Length);
            Assert.AreEqual(2, authnRequest.RequestedAuthnContext.ItemsElementName.Length);
            Assert.AreEqual(AuthnContextType.AuthnContextClassRef, authnRequest.RequestedAuthnContext.ItemsElementName[0]);
            Assert.AreEqual(AuthnticationContexts.Password, authnRequest.RequestedAuthnContext.Items[0]);
            Assert.AreEqual(AuthnContextType.AuthnContextClassRef, authnRequest.RequestedAuthnContext.ItemsElementName[1]);
            Assert.AreEqual(AuthnticationContexts.PasswordProtectedTransport, authnRequest.RequestedAuthnContext.Items[1]);
        }
Exemple #2
0
        public FederationPartyConfiguration BuildContext(string federationPartyId, string defaultNameIdFormat, ScopingConfiguration scopingConfiguration, RequestedAuthnContextConfiguration requestedAuthnContextConfiguration)
        {
            var nameIdconfiguration = new DefaultNameId(new Uri(defaultNameIdFormat));
            var federationPartyAuthnRequestConfiguration = new FederationPartyAuthnRequestConfiguration(requestedAuthnContextConfiguration, nameIdconfiguration, scopingConfiguration);

            return(new FederationPartyConfiguration("local", "https://dg-mfb/idp/shibboleth")
            {
                MetadataContext = this._inlineMetadataContextBuilder.BuildContext(new MetadataGenerateRequest(MetadataType.SP, "local")),
                FederationPartyAuthnRequestConfiguration = federationPartyAuthnRequestConfiguration
            });
        }
        private FederationPartyAuthnRequestConfiguration BuildFederationPartyAuthnRequestConfiguration(AutnRequestSettings autnRequestSettings, string entityId)
        {
            if (autnRequestSettings == null)
            {
                throw new ArgumentNullException("autnRequestSettings");
            }

            RequestedAuthnContextConfiguration requestedAuthnContextConfiguration = null;

            if (autnRequestSettings.RequitedAutnContext != null)
            {
                requestedAuthnContextConfiguration = new RequestedAuthnContextConfiguration(autnRequestSettings.RequitedAutnContext.Comparison.ToString());
                autnRequestSettings.RequitedAutnContext.RequitedAuthnContexts.Aggregate(requestedAuthnContextConfiguration.RequestedAuthnContexts, (t, next) =>
                {
                    t.Add(new Kernel.Federation.Protocols.AuthnContext(next.RefType.ToString(), new Uri(next.Value)));
                    return(t);
                });
            }
            if (autnRequestSettings.NameIdConfiguration == null)
            {
                throw new ArgumentNullException("nameIdConfiguration");
            }
            var defaultNameUri = autnRequestSettings.NameIdConfiguration.DefaultNameIdFormat != null ? autnRequestSettings.NameIdConfiguration.DefaultNameIdFormat.Uri : NameIdentifierFormats.Unspecified;
            var defaultNameId  = new DefaultNameId(new Uri(defaultNameUri))
            {
                AllowCreate   = autnRequestSettings.NameIdConfiguration.AllowCreate,
                EncryptNameId = autnRequestSettings.NameIdConfiguration.EncryptNameId
            };
            var scopingConfiguration = autnRequestSettings.Scoping == null ? (ScopingConfiguration)null
                    : new ScopingConfiguration(entityId)
            {
                PoxyCount = autnRequestSettings.Scoping.MaxProxyCount
            };

            var configuration = new FederationPartyAuthnRequestConfiguration(requestedAuthnContextConfiguration, defaultNameId, scopingConfiguration)
            {
                ForceAuthn = autnRequestSettings.ForceAuthn,
                IsPassive  = autnRequestSettings.IsPassive,
                Version    = autnRequestSettings.Version ?? "2.0"
            };

            return(configuration);
        }
Exemple #4
0
        private FederationPartyAuthnRequestConfiguration BuildFederationPartyAuthnRequestConfiguration(AutnRequestSettings autnRequestSettings)
        {
            if (autnRequestSettings == null)
            {
                throw new ArgumentNullException("autnRequestSettings");
            }
            if (autnRequestSettings.RequitedAutnContext == null)
            {
                throw new ArgumentNullException("requitedAutnContext");
            }

            var requestedAuthnContextConfiguration = new RequestedAuthnContextConfiguration(autnRequestSettings.RequitedAutnContext.Comparison.ToString());

            autnRequestSettings.RequitedAutnContext.RequitedAuthnContexts.Aggregate(requestedAuthnContextConfiguration.RequestedAuthnContexts, (t, next) =>
            {
                t.Add(new Kernel.Federation.Protocols.AuthnContext(next.RefType.ToString(), new Uri(next.Value)));
                return(t);
            });
            if (autnRequestSettings.NameIdConfiguration == null)
            {
                throw new ArgumentNullException("nameIdConfiguration");
            }

            var defaultNameId = new DefaultNameId(new Uri(autnRequestSettings.NameIdConfiguration.DefaultNameIdFormat.Uri))
            {
                AllowCreate   = autnRequestSettings.NameIdConfiguration.AllowCreate,
                EncryptNameId = autnRequestSettings.NameIdConfiguration.EncryptNameId
            };
            var configuration = new FederationPartyAuthnRequestConfiguration(requestedAuthnContextConfiguration, defaultNameId)
            {
                ForceAuthn = autnRequestSettings.ForceAuthn,
                IsPassive  = autnRequestSettings.IsPassive,
                Version    = autnRequestSettings.Version ?? "2.0"
            };

            return(configuration);
        }