public SqlServerInstanceProvider(ILogger <SqlServerInstanceProvider> logger, DatabaseConfigurationOptions highAvailabilityOptions, IAmsLicenseManager licenseManager, IWindowsServiceProvider windowsServiceProvider)
 {
     this.logger = logger;
     this.highAvailabilityOptions = highAvailabilityOptions;
     this.licenseManager          = licenseManager;
     this.windowsServiceProvider  = windowsServiceProvider;
 }
        public SecurityDescriptorTargetViewModel(SecurityDescriptorTarget model, SecurityDescriptorTargetViewModelDisplaySettings displaySettings, INotificationChannelSelectionViewModelFactory notificationChannelFactory, IFileSelectionViewModelFactory fileSelectionViewModelFactory, IAppPathProvider appPathProvider, ILogger <SecurityDescriptorTargetViewModel> logger, IDialogCoordinator dialogCoordinator, IModelValidator <SecurityDescriptorTargetViewModel> validator, IDirectory directory, IDomainTrustProvider domainTrustProvider, IDiscoveryServices discoveryServices, ILocalSam localSam, IObjectSelectionProvider objectSelectionProvider, ScriptTemplateProvider scriptTemplateProvider, IAmsLicenseManager licenseManager, IShellExecuteProvider shellExecuteProvider)
        {
            this.directory                  = directory;
            this.Model                      = model;
            this.logger                     = logger;
            this.dialogCoordinator          = dialogCoordinator;
            this.notificationChannelFactory = notificationChannelFactory;
            this.Validator                  = validator;
            this.domainTrustProvider        = domainTrustProvider;
            this.discoveryServices          = discoveryServices;
            this.localSam                   = localSam;
            this.displaySettings            = displaySettings ?? new SecurityDescriptorTargetViewModelDisplaySettings();
            this.objectSelectionProvider    = objectSelectionProvider;
            this.scriptTemplateProvider     = scriptTemplateProvider;
            this.licenseManager             = licenseManager;
            this.shellExecuteProvider       = shellExecuteProvider;

            this.Script = fileSelectionViewModelFactory.CreateViewModel(model, () => model.Script, appPathProvider.ScriptsPath);
            this.Script.DefaultFileExtension = "ps1";
            this.Script.Filter           = "PowerShell script|*.ps1";
            this.Script.NewFileContent   = this.scriptTemplateProvider.GetAuthorizationResponse;
            this.Script.ShouldValidate   = false;
            this.Script.PropertyChanged += Script_PropertyChanged;
            this.Initialization          = this.Initialize();
        }
Exemple #3
0
        private void ConfigureDataProtection(IServiceCollection services, IAmsLicenseManager licenseManager)
        {
            var provider = services.BuildServiceProvider();
            var dataProtectionOptions = provider.GetService <IOptions <Server.Configuration.DataProtectionOptions> >();

            IDataProtectionBuilder builder = services.AddDataProtection(options =>
            {
                options.ApplicationDiscriminator = "lithnetams";
            });

            SecurityIdentifier sid = WindowsIdentity.GetCurrent().User;

            RegistryKey key = Registry.LocalMachine.CreateSubKey($"Software\\Lithnet\\Access Manager Service\\Parameters\\Keys\\{sid}");

            builder.PersistKeysToRegistry(key);

            if (dataProtectionOptions.Value.EnableClusterCompatibleSecretEncryption && licenseManager.IsFeatureEnabled(LicensedFeatures.DpapiNgSecretEncryption))
            {
                if (dataProtectionOptions.Value.EnableClusterCompatibleSecretEncryption && licenseManager.IsFeatureEnabled(LicensedFeatures.DpapiNgSecretEncryption))
                {
                    builder.ProtectKeysWithDpapiNG($"SID={sid}", Microsoft.AspNetCore.DataProtection.XmlEncryption.DpapiNGProtectionDescriptorFlags.None);
                }
                else
                {
                    builder.ProtectKeysWithDpapi(false);
                }
            }
        }
Exemple #4
0
        public HighAvailabilityViewModel(IDialogCoordinator dialogCoordinator, IShellExecuteProvider shellExecuteProvider, IAmsLicenseManager licenseManager, ILogger <HighAvailabilityViewModel> logger, INotifyModelChangedEventPublisher eventPublisher, DatabaseConfigurationOptions highAvailabilityOptions, DataProtectionOptions dataProtectionOptions, ICertificateSynchronizationProvider certSyncProvider, ISecretRekeyProvider rekeyProvider, SqlServerInstanceProvider sqlInstanceProvider, IScriptTemplateProvider scriptTemplateProvider, IWindowsServiceProvider windowsServiceProvider)
        {
            this.shellExecuteProvider = shellExecuteProvider;
            this.licenseManager       = licenseManager;
            this.logger                 = logger;
            this.dbOptions              = highAvailabilityOptions;
            this.dataProtectionOptions  = dataProtectionOptions;
            this.certSyncProvider       = certSyncProvider;
            this.dialogCoordinator      = dialogCoordinator;
            this.rekeyProvider          = rekeyProvider;
            this.sqlInstanceProvider    = sqlInstanceProvider;
            this.scriptTemplateProvider = scriptTemplateProvider;
            this.windowsServiceProvider = windowsServiceProvider;

            this.licenseManager.OnLicenseDataChanged += delegate
            {
                this.NotifyOfPropertyChange(nameof(this.IsEnterpriseEdition));
                this.NotifyOfPropertyChange(nameof(this.ShowEnterpriseEditionBanner));
            };

            this.DisplayName = "High availability";
            eventPublisher.Register(this);

            this.isClusterCompatibleSecretEncryptionEnabled = this.dataProtectionOptions.EnableClusterCompatibleSecretEncryption;
        }
 private CertificateSynchronizationProvider(RandomNumberGenerator rng, ILogger <CertificateSynchronizationProvider> logger, IProtectedSecretProvider secretProvider, ICertificatePermissionProvider certPermissionProvider, IAmsLicenseManager licenseManager)
 {
     this.rng                    = rng;
     this.logger                 = logger;
     this.secretProvider         = secretProvider;
     this.certPermissionProvider = certPermissionProvider;
     this.licenseManager         = licenseManager;
 }
Exemple #6
0
 public ProtectedSecretProvider(IEncryptionProvider encryptionProvider, ICertificateProvider certificateProvider, RandomNumberGenerator rng, IOptions <DataProtectionOptions> dataProtectionOptions, IWindowsServiceProvider windowsServiceProvider, IAmsLicenseManager licenseManager)
 {
     this.encryptionProvider  = encryptionProvider;
     this.certificateProvider = certificateProvider;
     this.rng = rng;
     this.dataProtectionOptions  = dataProtectionOptions.Value;
     this.windowsServiceProvider = windowsServiceProvider;
     this.licenseManager         = licenseManager;
 }
Exemple #7
0
 public AuthorizationInformationBuilder(IOptionsSnapshot <AuthorizationOptions> options, ILogger <AuthorizationInformationBuilder> logger, IPowerShellSecurityDescriptorGenerator powershell, IAuthorizationInformationMemoryCache authzCache, IComputerTargetProvider computerTargetProvider, IAuthorizationContextProvider authorizationContextProvider, IAmsLicenseManager licenseManager)
 {
     this.logger                       = logger;
     this.options                      = options.Value;
     this.powershell                   = powershell;
     this.authzCache                   = authzCache;
     this.computerTargetProvider       = computerTargetProvider;
     this.authorizationContextProvider = authorizationContextProvider;
     this.licenseManager               = licenseManager;
 }
Exemple #8
0
 public SqlDbProvider(IAmsLicenseManager licenseManager, IOptions <DatabaseConfigurationOptions> highAvailabilityOptions, ILogger <SqlDbProvider> logger, IUpgradeLog upgradeLogger, SqlLocalDbInstanceProvider localDbInstanceProvider, SqlServerInstanceProvider sqlServerInstanceProvider)
 {
     this.licenseManager          = licenseManager;
     this.highAvailabilityOptions = highAvailabilityOptions.Value;
     this.logger                    = logger;
     this.upgradeLogger             = upgradeLogger;
     this.localDbInstanceProvider   = localDbInstanceProvider;
     this.sqlServerInstanceProvider = sqlServerInstanceProvider;
     this.InitializeDb();
 }
Exemple #9
0
 public LicensingViewModel(IDialogCoordinator dialogCoordinator, IShellExecuteProvider shellExecuteProvider, IAmsLicenseManager licenseManager, ILogger <LicensingViewModel> logger, LicensingOptions licensingOptions, INotifyModelChangedEventPublisher eventPublisher, ILicenseDataProvider licenseDataProvider, IEventAggregator eventAggregator)
 {
     this.shellExecuteProvider = shellExecuteProvider;
     this.licenseManager       = licenseManager;
     this.logger              = logger;
     this.licensingOptions    = licensingOptions;
     this.licenseDataProvider = licenseDataProvider;
     this.eventAggregator     = eventAggregator;
     this.dialogCoordinator   = dialogCoordinator;
     this.DisplayName         = "License";
     this.ValidationResult    = licenseManager.ValidateLicense(licenseDataProvider.GetRawLicenseData());
     eventPublisher.Register(this);
 }
 public ComputerController(IAuthorizationService authorizationService, ILogger <ComputerController> logger, IDirectory directory,
                           IAuditEventProcessor reporting, IOptionsSnapshot <UserInterfaceOptions> userInterfaceSettings, IAuthenticationProvider authenticationProvider, IPasswordProvider passwordProvider, IJitAccessProvider jitAccessProvider, IBitLockerRecoveryPasswordProvider bitLockerProvider, IAmsLicenseManager licenseManager)
 {
     this.authorizationService = authorizationService;
     this.logger                 = logger;
     this.directory              = directory;
     this.reporting              = reporting;
     this.userInterfaceSettings  = userInterfaceSettings.Value;
     this.authenticationProvider = authenticationProvider;
     this.passwordProvider       = passwordProvider;
     this.jitAccessProvider      = jitAccessProvider;
     this.bitLockerProvider      = bitLockerProvider;
     this.licenseManager         = licenseManager;
 }
Exemple #11
0
 public SecurityDescriptorTargetViewModelFactory(IDialogCoordinator dialogCoordinator, IAppPathProvider appPathProvider, INotificationChannelSelectionViewModelFactory channelSelectionViewModelFactory, IFileSelectionViewModelFactory fileSelectionViewModelFactory, ILogger <SecurityDescriptorTargetViewModel> logger, IDiscoveryServices discoveryServices, IDomainTrustProvider domainTrustProvider, IDirectory directory, ILocalSam localsam, IObjectSelectionProvider objectSelectionProvider, Func <IModelValidator <SecurityDescriptorTargetViewModel> > validator, ScriptTemplateProvider scriptTemplateProvider, IAmsLicenseManager licenseManager, IShellExecuteProvider shellExecuteProvider)
 {
     this.dialogCoordinator = dialogCoordinator;
     this.appPathProvider   = appPathProvider;
     this.channelSelectionViewModelFactory = channelSelectionViewModelFactory;
     this.fileSelectionViewModelFactory    = fileSelectionViewModelFactory;
     this.logger                  = logger;
     this.directory               = directory;
     this.discoveryServices       = discoveryServices;
     this.domainTrustProvider     = domainTrustProvider;
     this.localSam                = localsam;
     this.objectSelectionProvider = objectSelectionProvider;
     this.validator               = validator;
     this.scriptTemplateProvider  = scriptTemplateProvider;
     this.licenseManager          = licenseManager;
     this.shellExecuteProvider    = shellExecuteProvider;
 }
Exemple #12
0
        public void TestInitialize()
        {
            this.discoveryServices = new DiscoveryServices(Mock.Of <ILogger <DiscoveryServices> >());
            directory  = new ActiveDirectory(discoveryServices);
            cache      = new AuthorizationInformationMemoryCache();
            logger     = Global.LogFactory.CreateLogger <AuthorizationInformationBuilder>();
            powershell = Mock.Of <IPowerShellSecurityDescriptorGenerator>();
            var mockLicenseManager = new Mock <IAmsLicenseManager>();

            mockLicenseManager.Setup(l => l.IsEnterpriseEdition()).Returns(true);
            mockLicenseManager.Setup(l => l.IsFeatureCoveredByFullLicense(It.IsAny <LicensedFeatures>())).Returns(true);
            mockLicenseManager.Setup(l => l.IsFeatureEnabled(It.IsAny <LicensedFeatures>())).Returns(true);
            this.licenseManager = mockLicenseManager.Object;

            targetDataProvider           = new ComputerTargetProvider(directory, new TargetDataProvider(new TargetDataCache(), Global.LogFactory.CreateLogger <TargetDataProvider>()), Global.LogFactory.CreateLogger <ComputerTargetProvider>());
            authorizationContextProvider = new AuthorizationContextProvider(Mock.Of <IOptions <AuthorizationOptions> >(), Global.LogFactory.CreateLogger <AuthorizationContextProvider>(), discoveryServices);
        }
        public MainWindowViewModel(IApplicationConfig model, AuthenticationViewModel authentication, AuthorizationViewModel authorization, UserInterfaceViewModel ui, RateLimitsViewModel rate, IpDetectionViewModel ip,
                                   AuditingViewModel audit, EmailViewModel mail, HostingViewModel hosting, ActiveDirectoryConfigurationViewModel ad,
                                   JitConfigurationViewModel jit, LapsConfigurationViewModel laps, HelpViewModel help, BitLockerViewModel bitLocker, LicensingViewModel lic, HighAvailabilityViewModel havm, IEventAggregator eventAggregator, IDialogCoordinator dialogCoordinator, ILogger <MainWindowViewModel> logger, IShellExecuteProvider shellExecuteProvider, IWindowsServiceProvider windowsServiceProvider, IRegistryProvider registryProvider, ICertificateSynchronizationProvider certSyncProvider, IAmsLicenseManager licenseManager, IClusterProvider clusterProvider)
        {
            this.model = model;
            this.shellExecuteProvider = shellExecuteProvider;
            this.logger                 = logger;
            this.dialogCoordinator      = dialogCoordinator;
            this.windowsServiceProvider = windowsServiceProvider;
            this.hosting                = hosting;
            this.registryProvider       = registryProvider;
            this.eventAggregator        = eventAggregator;
            this.certSyncProvider       = certSyncProvider;
            this.dialogCoordinator      = dialogCoordinator;
            this.licenseManager         = licenseManager;
            this.clusterProvider        = clusterProvider;
            this.clusterWaitSemaphore   = new SemaphoreSlim(0, 1);

            this.eventAggregator.Subscribe(this);
            this.DisplayName = Constants.AppName;

            this.Items.Add(hosting);
            this.Items.Add(authentication);
            this.Items.Add(ui);
            this.Items.Add(mail);
            this.Items.Add(rate);
            this.Items.Add(ip);
            this.Items.Add(ad);
            this.Items.Add(audit);
            this.Items.Add(laps);
            this.Items.Add(jit);
            this.Items.Add(bitLocker);
            this.Items.Add(authorization);
            this.Items.Add(lic);
            this.Items.Add(havm);

            this.OptionItems = new BindableCollection <PropertyChangedBase> {
                help
            };

            this.ActiveItem = this.Items.First();

            this.UpdateIsConfigured();
            this.SetupClusterMonitor();
        }
        public HostingViewModel(HostingOptions model, IDialogCoordinator dialogCoordinator, IWindowsServiceProvider windowsServiceProvider, ILogger <HostingViewModel> logger, IModelValidator <HostingViewModel> validator, IAppPathProvider pathProvider, INotifyModelChangedEventPublisher eventPublisher, ICertificateProvider certProvider, IShellExecuteProvider shellExecuteProvider, IEventAggregator eventAggregator, IDirectory directory, IScriptTemplateProvider scriptTemplateProvider, ICertificatePermissionProvider certPermissionProvider, IRegistryProvider registryProvider, ISecretRekeyProvider rekeyProvider, IObjectSelectionProvider objectSelectionProvider, IDiscoveryServices discoveryServices, IAmsLicenseManager licenseManager, IApplicationUpgradeProvider appUpgradeProvider, IHttpSysConfigurationProvider certificateBindingProvider, IFirewallProvider firewallProvider)
        {
            this.logger                     = logger;
            this.pathProvider               = pathProvider;
            this.OriginalModel              = model;
            this.certProvider               = certProvider;
            this.dialogCoordinator          = dialogCoordinator;
            this.windowsServiceProvider     = windowsServiceProvider;
            this.shellExecuteProvider       = shellExecuteProvider;
            this.eventAggregator            = eventAggregator;
            this.Validator                  = validator;
            this.directory                  = directory;
            this.scriptTemplateProvider     = scriptTemplateProvider;
            this.certPermissionProvider     = certPermissionProvider;
            this.registryProvider           = registryProvider;
            this.rekeyProvider              = rekeyProvider;
            this.objectSelectionProvider    = objectSelectionProvider;
            this.discoveryServices          = discoveryServices;
            this.licenseManager             = licenseManager;
            this.appUpgradeProvider         = appUpgradeProvider;
            this.certificateBindingProvider = certificateBindingProvider;
            this.firewallProvider           = firewallProvider;

            this.WorkingModel        = this.CloneModel(model);
            this.Certificate         = this.certificateBindingProvider.GetCertificate();
            this.OriginalCertificate = this.Certificate;
            this.ServiceAccount      = this.windowsServiceProvider.GetServiceAccountSid();
            this.ServiceStatus       = this.windowsServiceProvider.Status.ToString();
            this.DisplayName         = "Web hosting";

            this.licenseManager.OnLicenseDataChanged += delegate
            {
                this.NotifyOfPropertyChange(nameof(this.IsEnterpriseEdition));
                this.NotifyOfPropertyChange(nameof(this.IsStandardEdition));
            };

            eventPublisher.Register(this);
        }
Exemple #15
0
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();
            services.AddHttpContextAccessor();
            services.AddResponseCaching();

            services.AddHsts(options =>
            {
                options.Preload           = false;
                options.IncludeSubDomains = true;
                options.MaxAge            = TimeSpan.FromDays(365);
            });

            services.Configure <CookiePolicyOptions>(options =>
            {
                options.MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.Unspecified;
                options.HttpOnly = Microsoft.AspNetCore.CookiePolicy.HttpOnlyPolicy.Always;
                options.Secure   = Microsoft.AspNetCore.Http.CookieSecurePolicy.Always;
            });

            services.TryAddScoped <IIwaAuthenticationProvider, IwaAuthenticationProvider>();
            services.TryAddScoped <IOidcAuthenticationProvider, OidcAuthenticationProvider>();
            services.TryAddScoped <IWsFedAuthenticationProvider, WsFedAuthenticationProvider>();
            services.TryAddScoped <ICertificateAuthenticationProvider, CertificateAuthenticationProvider>();

            services.TryAddScoped <IAuthorizationService, SecurityDescriptorAuthorizationService>();
            services.TryAddScoped <SecurityDescriptorAuthorizationService>();
            services.TryAddScoped <IPowerShellSecurityDescriptorGenerator, PowerShellSecurityDescriptorGenerator>();
            services.TryAddScoped <IAuditEventProcessor, AuditEventProcessor>();
            services.TryAddScoped <ITemplateProvider, TemplateProvider>();
            services.TryAddScoped <IJitAccessProvider, JitAccessProvider>();
            services.TryAddScoped <IPhoneticPasswordTextProvider, PhoneticStringProvider>();
            services.TryAddScoped <IHtmlPasswordProvider, HtmlPasswordProvider>();
            services.TryAddScoped <ILithnetAdminPasswordProvider, LithnetAdminPasswordProvider>();
            services.TryAddScoped <IPasswordProvider, PasswordProvider>();
            services.TryAddScoped <IMsMcsAdmPwdProvider, MsMcsAdmPwdProvider>();
            services.TryAddScoped <IAuthorizationInformationBuilder, AuthorizationInformationBuilder>();
            services.TryAddScoped <ITargetDataProvider, TargetDataProvider>();
            services.TryAddScoped <IBitLockerRecoveryPasswordProvider, BitLockerRecoveryPasswordProvider>();
            services.TryAddScoped <IComputerTargetProvider, ComputerTargetProvider>();

            services.TryAddSingleton <ISmtpProvider, SmtpProvider>();
            services.TryAddSingleton <IApplicationUpgradeProvider, ApplicationUpgradeProvider>();
            services.TryAddSingleton <IDirectory, ActiveDirectory>();
            services.TryAddSingleton <IDiscoveryServices, DiscoveryServices>();
            services.TryAddSingleton <IEncryptionProvider, EncryptionProvider>();
            services.TryAddSingleton <ICertificateProvider, CertificateProvider>();
            services.TryAddSingleton <IAppPathProvider, WebAppPathProvider>();
            services.TryAddSingleton(RandomNumberGenerator.Create());
            services.TryAddSingleton <IJitAccessGroupResolver, JitAccessGroupResolver>();
            services.TryAddSingleton <IPowerShellSessionProvider, CachedPowerShellSessionProvider>();
            services.TryAddSingleton <IAuthorizationInformationMemoryCache, AuthorizationInformationMemoryCache>();
            services.TryAddSingleton <ITargetDataCache, TargetDataCache>();
            services.TryAddSingleton <IAuthorizationContextProvider, AuthorizationContextProvider>();
            services.TryAddSingleton <IClusterProvider, ClusterProvider>();
            services.TryAddSingleton <IProductSettingsProvider, ProductSettingsProvider>();
            services.TryAddSingleton <IProtectedSecretProvider, ProtectedSecretProvider>();
            services.TryAddSingleton <IRegistryProvider>(new RegistryProvider(true));
            services.TryAddSingleton <ILicenseDataProvider, OptionsMonitorLicenseDataProvider>();
            services.TryAddSingleton <ICertificateSynchronizationProvider, CertificateSynchronizationProvider>();
            services.TryAddSingleton <IWindowsServiceProvider, WindowsServiceProvider>();
            services.TryAddSingleton <ICertificatePermissionProvider, CertificatePermissionProvider>();
            services.TryAddSingleton <ILocalSam, LocalSam>();
            services.TryAddSingleton <IUpgradeLog, DbUpgradeLogger>();
            services.TryAddSingleton <IDbProvider, SqlDbProvider>();
            services.TryAddSingleton <SqlLocalDbInstanceProvider>();
            services.TryAddSingleton <SqlServerInstanceProvider>();
            services.TryAddSingleton <IHttpSysConfigurationProvider, HttpSysConfigurationProvider>();

            services.TryAddTransient <NewVersionCheckJob>();
            services.TryAddTransient <CertificateExpiryCheckJob>();

            services.AddOptions <QuartzOptions>()
            .Configure <IDbProvider>(
                (o, s) =>
            {
                o.Add("quartz.dataSource.mydb.connectionString", s.ConnectionString);
                o.Add("quartz.jobStore.type", "Quartz.Impl.AdoJobStore.JobStoreTX, Quartz");
                o.Add("quartz.jobStore.driverDelegateType", "Quartz.Impl.AdoJobStore.SqlServerDelegate, Quartz");
                o.Add("quartz.dataSource.mydb.provider", "SqlServer");
                o.Add("quartz.jobStore.dataSource", "mydb");
                o.Add("quartz.serializer.type", "json");
                o.Add("quartz.scheduler.instanceName", "AMSCoreScheduler");
                o.Add("quartz.scheduler.instanceId", "AUTO");
                o.Add("quartz.threadPool.threadCount", "10");
            });

            services.AddQuartz(q =>
            {
                q.UseMicrosoftDependencyInjectionJobFactory(options =>
                {
                    options.AllowDefaultConstructor = true;
                });
            });

            services.AddScoped <INotificationChannel, SmtpNotificationChannel>();
            services.AddScoped <INotificationChannel, WebhookNotificationChannel>();
            services.AddScoped <INotificationChannel, PowershellNotificationChannel>();

            var backgroundProcessingChannel = Channel.CreateUnbounded <Action>();

            services.AddSingleton(backgroundProcessingChannel.Reader);
            services.AddSingleton(backgroundProcessingChannel.Writer);
            services.AddHostedService <AuditWorker>();
            services.AddHostedService <JitGroupWorker>();
            services.AddHostedService <CertificateImportWorker>();
            services.AddHostedService <SchedulerService>();

            if (registryProvider.CacheMode == 0)
            {
                services.TryAddScoped <IRateLimiter, SqlCacheRateLimiter>();
            }
            else
            {
                services.TryAddScoped <IRateLimiter, MemoryCacheRateLimiter>();
            }

            services.Configure <HostOptions>(opts => opts.ShutdownTimeout = TimeSpan.FromSeconds(30));

            services.Configure <UserInterfaceOptions>(Configuration.GetSection("UserInterface"));
            services.Configure <ConfigurationMetadata>(Configuration.GetSection("Metadata"));
            services.Configure <RateLimitOptions>(Configuration.GetSection("RateLimits"));
            services.Configure <EmailOptions>(Configuration.GetSection("Email"));
            services.Configure <AuditOptions>(Configuration.GetSection("Auditing"));
            services.Configure <AuthenticationOptions>(Configuration.GetSection("Authentication"));
            services.Configure <IwaAuthenticationProviderOptions>(Configuration.GetSection("Authentication:Iwa"));
            services.Configure <OidcAuthenticationProviderOptions>(Configuration.GetSection("Authentication:Oidc"));
            services.Configure <WsFedAuthenticationProviderOptions>(Configuration.GetSection("Authentication:WsFed"));
            services.Configure <CertificateAuthenticationProviderOptions>(Configuration.GetSection("Authentication:ClientCert"));
            services.Configure <HostingOptions>(Configuration.GetSection("Hosting"));
            services.Configure <AuthorizationOptions>(Configuration.GetSection("Authorization"));
            services.Configure <ForwardedHeadersAppOptions>(Configuration.GetSection("ForwardedHeaders"));
            services.Configure <JitConfigurationOptions>(Configuration.GetSection("JitConfiguration"));
            services.Configure <LicensingOptions>(Configuration.GetSection("Licensing"));
            services.Configure <DatabaseConfigurationOptions>(Configuration.GetSection("DatabaseConfiguration"));
            services.Configure <Server.Configuration.DataProtectionOptions>(Configuration.GetSection("DataProtection"));
            services.Configure <AdminNotificationOptions>(Configuration.GetSection("AdminNotifications"));

            IAmsLicenseManager licenseManager = this.CreateLicenseManager(services);

            services.AddSingleton(licenseManager);


            this.ConfigureAuthentication(services);
            this.ConfigureAuthorization(services);
            this.ConfigureDataProtection(services, licenseManager);
        }
 public CertificateSynchronizationProvider(RandomNumberGenerator rng, ILogger <CertificateSynchronizationProvider> logger, DataProtectionOptions dataProtectionOptions, IProtectedSecretProvider secretProvider, ICertificatePermissionProvider certPermissionProvider, IAmsLicenseManager licenseManager)
     : this(rng, logger, secretProvider, certPermissionProvider, licenseManager)
 {
     this.dataProtectionOptions = dataProtectionOptions;
 }
 public SqlServerInstanceProvider(ILogger <SqlServerInstanceProvider> logger, IOptions <DatabaseConfigurationOptions> highAvailabilityOptions, IAmsLicenseManager licenseManager, IWindowsServiceProvider windowsServiceProvider)
     : this(logger, highAvailabilityOptions.Value, licenseManager, windowsServiceProvider)
 {
 }
 public CertificateSynchronizationProvider(RandomNumberGenerator rng, ILogger <CertificateSynchronizationProvider> logger, IOptionsMonitor <DataProtectionOptions> dataProtectionOptions, IProtectedSecretProvider secretProvider, ICertificatePermissionProvider certPermissionProvider, IAmsLicenseManager licenseManager)
     : this(rng, logger, secretProvider, certPermissionProvider, licenseManager)
 {
     this.dataProtectionOptions = dataProtectionOptions.CurrentValue;
     dataProtectionOptions.OnChange((o, s) =>
     {
         this.dataProtectionOptions = o;
         this.ImportCertificatesFromConfig();
     });
 }