public override void Add(ExtendedAuthenticationBuilder authenticationBuilder, string name, SchemeRegistrationOptions schemeRegistrationOptions)
        {
            base.Add(authenticationBuilder, name, schemeRegistrationOptions);

            authenticationBuilder.AddGrandId(builder =>
            {
                var grandIdConfiguration = this.GetConfigurationOptions(authenticationBuilder, schemeRegistrationOptions);

                // ReSharper disable ConvertIfStatementToSwitchStatement
                if (grandIdConfiguration.Environment == ActiveLoginEnvironment.Simulated)
                {
                    new GrandIdBuilderWrapper(builder).UseSimulatedEnvironment(grandIdConfiguration.SimulatedPerson);
                }
                else
                {
                    if (grandIdConfiguration.Environment == ActiveLoginEnvironment.Test)
                    {
                        builder.UseTestEnvironment(environmentConfiguration => this.Bind(authenticationBuilder, environmentConfiguration, schemeRegistrationOptions));
                    }
                    else
                    {
                        builder.UseProductionEnvironment(environmentConfiguration => this.Bind(authenticationBuilder, environmentConfiguration, schemeRegistrationOptions));
                    }
                }
                // ReSharper restore ConvertIfStatementToSwitchStatement

                this.Add(authenticationBuilder, builder, name, schemeRegistrationOptions);
            });
        }
        protected internal virtual X509Certificate2 GetCertificate(ExtendedAuthenticationBuilder authenticationBuilder, DynamicOptions dynamicOptions)
        {
            try
            {
                if (authenticationBuilder == null)
                {
                    throw new ArgumentNullException(nameof(authenticationBuilder));
                }

                if (dynamicOptions == null)
                {
                    throw new ArgumentNullException(nameof(dynamicOptions));
                }

                var resolverOptions = (ResolverOptions)authenticationBuilder.InstanceFactory.Create(dynamicOptions.Type);

                dynamicOptions.Options?.Bind(resolverOptions);

                var certificate = authenticationBuilder.CertificateResolver.ResolveAsync(resolverOptions).Result;

                return(certificate.Unwrap <X509Certificate2>());
            }
            catch (Exception exception)
            {
                throw new InvalidOperationException($"Could not get certificate from options with type \"{dynamicOptions?.Type}\".", exception);
            }
        }
Ejemplo n.º 3
0
        public override void Add(ExtendedAuthenticationBuilder authenticationBuilder, string name, SchemeRegistrationOptions schemeRegistrationOptions)
        {
            if (schemeRegistrationOptions == null)
            {
                throw new ArgumentNullException(nameof(schemeRegistrationOptions));
            }

            this.GetAddFunction(authenticationBuilder)(name, schemeRegistrationOptions.DisplayName, options => { this.Bind(authenticationBuilder, options, schemeRegistrationOptions); });
        }
Ejemplo n.º 4
0
        public override void Add(ExtendedAuthenticationBuilder authenticationBuilder, string name, SchemeRegistrationOptions schemeRegistrationOptions)
        {
            if (authenticationBuilder == null)
            {
                throw new ArgumentNullException(nameof(authenticationBuilder));
            }

            if (schemeRegistrationOptions == null)
            {
                throw new ArgumentNullException(nameof(schemeRegistrationOptions));
            }

            //authenticationBuilder.Services.Configure<CertificateAuthenticationOptions>(name, options => { this.Bind(configuration, options, schemeRegistrationOptions); });

            authenticationBuilder.AddCertificate(name, schemeRegistrationOptions.DisplayName, options => { this.Bind(authenticationBuilder, options, schemeRegistrationOptions); });
        }
Ejemplo n.º 5
0
        public static ExtendedAuthenticationBuilder AddAuthentication(this IServiceCollection services, ICertificateResolver certificateResolver, IConfiguration configuration, string configurationKey, IInstanceFactory instanceFactory, Action <AuthenticationOptions> postConfigureOptions)
        {
            if (services == null)
            {
                throw new ArgumentNullException(nameof(services));
            }

            if (certificateResolver == null)
            {
                throw new ArgumentNullException(nameof(certificateResolver));
            }

            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            if (configurationKey == null)
            {
                throw new ArgumentNullException(nameof(configurationKey));
            }

            if (instanceFactory == null)
            {
                throw new ArgumentNullException(nameof(instanceFactory));
            }

            if (postConfigureOptions == null)
            {
                throw new ArgumentNullException(nameof(postConfigureOptions));
            }

            services.AddAuthentication(options => { configuration.GetSection(configurationKey)?.Bind(options); });

            var authenticationBuilder = new ExtendedAuthenticationBuilder(services)
            {
                CertificateResolver = certificateResolver,
                Configuration       = configuration,
                ConfigurationKey    = configurationKey,
                InstanceFactory     = instanceFactory,
            }.Configure();

            services.PostConfigure(postConfigureOptions);

            return(authenticationBuilder);
        }
        protected internal virtual void Bind(ExtendedAuthenticationBuilder authenticationBuilder, object instance, SchemeRegistrationOptions schemeRegistrationOptions)
        {
            if (authenticationBuilder == null)
            {
                throw new ArgumentNullException(nameof(authenticationBuilder));
            }

            if (schemeRegistrationOptions == null)
            {
                throw new ArgumentNullException(nameof(schemeRegistrationOptions));
            }

            foreach (var path in schemeRegistrationOptions.CommonOptionsPaths)
            {
                authenticationBuilder.Configuration.GetSection(path)?.Bind(instance);
            }

            schemeRegistrationOptions.Options?.Bind(instance);
        }
Ejemplo n.º 7
0
        public override void Add(ExtendedAuthenticationBuilder authenticationBuilder, string name, SchemeRegistrationOptions schemeRegistrationOptions)
        {
            if (authenticationBuilder == null)
            {
                throw new ArgumentNullException(nameof(authenticationBuilder));
            }

            authenticationBuilder.Services.Configure <IISOptions>(options =>
            {
                options.AuthenticationDisplayName = schemeRegistrationOptions.DisplayName;
                options.AutomaticAuthentication   = false;

                this.Bind(authenticationBuilder, options, schemeRegistrationOptions);
            });

            authenticationBuilder.Services.Configure <IISServerOptions>(options =>
            {
                options.AuthenticationDisplayName = schemeRegistrationOptions.DisplayName;
                options.AutomaticAuthentication   = false;

                this.Bind(authenticationBuilder, options, schemeRegistrationOptions);
            });
        }
        public override void Add(ExtendedAuthenticationBuilder authenticationBuilder, string name, SchemeRegistrationOptions schemeRegistrationOptions)
        {
            base.Add(authenticationBuilder, name, schemeRegistrationOptions);

            authenticationBuilder.AddBankId(builder =>
            {
                var bankIdConfiguration = this.GetConfigurationOptions(authenticationBuilder, schemeRegistrationOptions);

                //builder.Configure(options => { this.Bind(configuration, options, schemeRegistrationOptions); });

                if (bankIdConfiguration.Environment == ActiveLoginEnvironment.Simulated)
                {
                    new BankIdBuilderWrapper(builder).UseSimulatedEnvironment(bankIdConfiguration.SimulatedPerson);
                }
                else
                {
                    if (bankIdConfiguration.Environment == ActiveLoginEnvironment.Test)
                    {
                        builder.UseTestEnvironment();
                    }
                    else
                    {
                        builder.UseProductionEnvironment();
                    }

                    this.ClientCertificate = this.GetCertificate(authenticationBuilder, bankIdConfiguration.ClientCertificate);
                    this.RootCertificate   = this.GetCertificate(authenticationBuilder, bankIdConfiguration.RootCertificate);

                    builder.UseClientCertificate(() => this.ClientCertificate);
                    builder.UseRootCaCertificate(() => this.RootCertificate);
                }

                builder.UseQrCoderQrCodeGenerator();

                this.Add(authenticationBuilder, builder, name, schemeRegistrationOptions);
            });
        }
 protected internal abstract void Add(ExtendedAuthenticationBuilder authenticationBuilder, IBankIdBuilder bankIdBuilder, string name, SchemeRegistrationOptions schemeRegistrationOptions);
Ejemplo n.º 10
0
 protected internal override void Add(ExtendedAuthenticationBuilder authenticationBuilder, IGrandIdBuilder grandIdBuilder, string name, SchemeRegistrationOptions schemeRegistrationOptions)
 {
     // ReSharper disable AssignNullToNotNullAttribute
     grandIdBuilder.AddBankIdSameDevice(name, schemeRegistrationOptions?.DisplayName, options => { this.Bind(authenticationBuilder, options, schemeRegistrationOptions); });
     // ReSharper restore AssignNullToNotNullAttribute
 }
 public abstract void Add(ExtendedAuthenticationBuilder authenticationBuilder, string name, SchemeRegistrationOptions schemeRegistrationOptions);