Example #1
0
        public static IServiceCollection AddInfrastructure(this IServiceCollection services, Settings settings, IWebHostEnvironment env)
        {
            services.AddSharedInfrastructure();

            services.AddScoped <FoxIDsApiRouteTransformer>();

            services.AddSingleton <OidcDiscoveryHandler>();

            if (env.IsProduction())
            {
                services.AddSingleton(serviceProvider =>
                {
                    return(FoxIDsKeyVaultClient.GetManagedClient());
                });
            }
            else
            {
                services.AddTransient <TokenHelper>();
                services.AddSingleton(serviceProvider =>
                {
                    var tokenHelper = serviceProvider.GetService <TokenHelper>();
                    return(FoxIDsKeyVaultClient.GetClient(settings, tokenHelper));
                });
            }

            services.AddHttpContextAccessor();
            services.AddHttpClient();

            services.AddApiSwagger();
            services.AddAutoMapper();

            return(services);
        }
Example #2
0
        public static IServiceCollection AddInfrastructure(this IServiceCollection services, FoxIDsSettings settings, IWebHostEnvironment env)
        {
            services.AddSharedInfrastructure();

            services.AddSingleton <IStringLocalizer, FoxIDsStringLocalizer>();
            services.AddSingleton <IStringLocalizerFactory, FoxIDsStringLocalizerFactory>();
            services.AddSingleton <IValidationAttributeAdapterProvider, LocalizedValidationAttributeAdapterProvider>();

            services.AddScoped <FoxIDsRouteTransformer>();
            services.AddScoped <ICorsPolicyProvider, CorsPolicyProvider>();

            services.AddSingleton <OidcDiscoveryHandler>();

            if (env.IsProduction())
            {
                services.AddSingleton(serviceProvider =>
                {
                    return(FoxIDsKeyVaultClient.GetManagedClient());
                });
            }
            else
            {
                services.AddTransient <TokenHelper>();
                services.AddSingleton(serviceProvider =>
                {
                    var tokenHelper = serviceProvider.GetService <TokenHelper>();
                    return(FoxIDsKeyVaultClient.GetClient(settings, tokenHelper));
                });
            }

            services.AddHttpContextAccessor();
            services.AddHttpClient();

            services.AddDataProtection()
            .PersistKeysToStackExchangeRedis(ConnectionMultiplexer.Connect(settings.RedisCache.ConnectionString), "data_protection_keys");

            services.AddStackExchangeRedisCache(options => {
                options.Configuration = settings.RedisCache.ConnectionString;
                options.InstanceName  = "cache";
            });

            return(services);
        }