Ejemplo n.º 1
0
        public void Configuration(IAppBuilder app)
        {
            var configuration = new ConfigurationBuilder()
                                .AddJsonFile("appsettings.json")
                                .Add(new WebConfigProvider())
                                .Build();
            var _certificateService = new WindowsCertificateService();
            var decryptionService   = new DecryptionService(_certificateService);

            var appConfig = new AppConfiguration();

            ConfigurationBinder.Bind(configuration, appConfig);

            var provider = new IdentityProviderSearchServiceConfigurationProvider(appConfig.EncryptionCertificateSettings, decryptionService);

            provider.GetAppConfiguration(appConfig);

            var logger = LogFactory.CreateTraceLogger(new LoggingLevelSwitch(), appConfig.ApplicationInsights);

            logger.Information("IdentityProviderSearchService is starting up...");

            appConfig.ConfigureIdentityServiceUrl();

            app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
            {
                Authority      = appConfig.IdentityServerConfidentialClientSettings.Authority,
                RequiredScopes = appConfig.IdentityServerConfidentialClientSettings.Scopes
            });

            app.UseNancy(opt => opt.Bootstrapper = new Bootstrapper(appConfig, logger));
            app.UseStageMarker(PipelineStage.MapHandler);
        }
        public void ConfigurationProvider_DecryptsSecret_Successfully(int count)
        {
            var privateKey      = GetPrivateKey();
            var clientSecret    = Guid.NewGuid().ToString();
            var appSettingsJson = GetEncryptedAppSettings(privateKey, clientSecret, count);
            var directory       = Directory.CreateDirectory(Path.Combine(Directory.GetCurrentDirectory(), "test"));

            File.WriteAllText(Path.Combine(directory.FullName, "appsettings.json"), appSettingsJson);
            var mockCertificateService = GetMockCertificateService(privateKey);
            var decryptionService      = new DecryptionService(mockCertificateService);

            var appConfig      = GetAppConfiguration();
            var configProvider = new IdentityProviderSearchServiceConfigurationProvider(new EncryptionCertificateSettings(), decryptionService);

            // Act
            configProvider.GetAppConfiguration(appConfig);

            // Assert
            Assert.NotNull(appConfig);
            for (int i = 0; i < count; i++)
            {
                Assert.Equal(clientSecret, appConfig.AzureActiveDirectoryClientSettings.ClientAppSettings[i].ClientSecret);
            }
        }