Beispiel #1
0
 public void Configure(IApplicationBuilder app)
 {
     EsquioUIApiConfiguration.Configure(app, _ => _, host =>
     {
         return(host.UseAuthentication().UseAuthorization());
     });
 }
Beispiel #2
0
        public void ConfigureServices(IServiceCollection services)
        {
            EsquioUIApiConfiguration.ConfigureServices(services)
            .AddSingleton <IDiscoverToggleTypesService, DiscoverToggleTypesService>()
            .AddAuthorization()
            .AddAuthentication(setup =>
            {
                setup.DefaultAuthenticateScheme = "secured";
                setup.DefaultChallengeScheme    = "secured";
            })
            .AddApiKey()
            .AddTestServer()
            .AddPolicyScheme("secured", "Authorization TestServer or ApiKey", options =>
            {
                options.ForwardDefaultSelector = context =>
                {
                    var apiKey = context.Request.Headers["X-Api-Key"].FirstOrDefault();

                    if (apiKey != null)
                    {
                        return(ApiKeyAuthenticationDefaults.ApiKeyScheme);
                    }

                    return(TestServerDefaults.AuthenticationScheme);;
                };
            })
            .Services
            .AddDbContext <StoreDbContext>(setup =>
            {
                setup.UseSqlServer(_configuration.GetConnectionString("Esquio"), opt =>
                {
                    opt.MigrationsAssembly(typeof(ServerFixture).Assembly.FullName);
                });
            });
        }
Beispiel #3
0
        public void ConfigureServices(IServiceCollection services)
        {
            EsquioUIApiConfiguration.ConfigureServices(services, _configuration)
            .AddSingleton <IDiscoverToggleTypesService, DiscoverToggleTypesService>()
            .AddAuthorization()
            .AddAuthentication(setup =>
            {
                setup.DefaultAuthenticateScheme = "secured";
                setup.DefaultChallengeScheme    = "secured";
            })
            .AddApiKey()
            .AddTestServer()
            .AddPolicyScheme("secured", "Authorization TestServer or ApiKey", options =>
            {
                options.ForwardDefaultSelector = context =>
                {
                    var apiKey = context.Request.Headers["X-Api-Key"].FirstOrDefault();

                    if (apiKey != null)
                    {
                        return(ApiKeyAuthenticationDefaults.ApiKeyScheme);
                    }

                    return(TestServerDefaults.AuthenticationScheme);
                };
            })
            .Services
            .AddEntityFramework(_configuration, Environment);
        }
Beispiel #4
0
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IApiVersionDescriptionProvider apiVersion)
        {
            EsquioUIApiConfiguration.Configure(app,
                                               preConfigure: appBuilder =>
            {
                appBuilder.AddClientBlazorConfiguration();
                appBuilder.UseResponseCompression();

                if (env.IsDevelopment())
                {
                    appBuilder.UseDeveloperExceptionPage();
                }

                return(appBuilder.UseDefaultFiles().UseStaticFiles());
            },
                                               postConfigure: appBuilder =>
            {
                return(appBuilder.UseAuthentication()
                       .UseAuthorization()
                       .UseBlazorFrameworkFiles()
                       .UseSwagger()
                       .UseSwaggerUI(setup =>
                {
                    setup.EnableDeepLinking();

                    foreach (var description in apiVersion.ApiVersionDescriptions)
                    {
                        setup.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName);
                    }
                }));
            });
        }
Beispiel #5
0
        public void ConfigureServices(IServiceCollection services)
        {
            services
            .AddHttpClient()
            .AddCors()
            .AddTransient <IConfigureOptions <SwaggerGenOptions>, ConfigureSwaggerGenOptions>()
            .AddSingleton <IDiscoverToggleTypesService, DiscoverToggleTypesService>()
            .AddResponseCompression(options =>
            {
                options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(
                    new[] { MediaTypeNames.Application.Octet });
            })
            .AddSwaggerGen()
            .AddApplicationInsightsTelemetry()
            .AddAuthentication(options =>
            {
                options.DefaultScheme          = "secured";
                options.DefaultChallengeScheme = "secured";
            })
            .AddApiKey()
            .AddJwtBearer(options =>
            {
                var securitySettings = new SecuritySettings();
                Configuration.Bind("Security", securitySettings);

                options.Audience  = securitySettings.OpenId.Audience;
                options.Authority = securitySettings.OpenId.Authority;

                options.TokenValidationParameters.ValidateIssuer = false;
            })
            .AddPolicyScheme("secured", "Authorization Bearer or ApiKey", options =>
            {
                options.ForwardDefaultSelector = context =>
                {
                    var bearer = context.Request
                                 .Headers["Authorization"]
                                 .FirstOrDefault();

                    if (bearer != null && bearer.StartsWith(JwtBearerDefaults.AuthenticationScheme))
                    {
                        return(JwtBearerDefaults.AuthenticationScheme);
                    }

                    return(ApiKeyAuthenticationDefaults.ApiKeyScheme);
                };
            });

            EsquioUIApiConfiguration.ConfigureServices(services, Configuration)
            .AddEntityFramework(Configuration, Environment)
            .AddHostedService <EsquioMetricsConsumer>();
        }
Beispiel #6
0
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IApiVersionDescriptionProvider apiVersion)
        {
            EsquioUIApiConfiguration.Configure(app,
                                               preConfigure: appBuilder =>
            {
                appBuilder.AddClientBlazorConfiguration();
                appBuilder.UseResponseCompression();

                if (env.IsDevelopment())
                {
                    appBuilder.UseDeveloperExceptionPage();
                    appBuilder.UseWebAssemblyDebugging();
                }

                return(appBuilder
                       .UseCors(builder =>
                {
                    var configuredOrigins = Configuration.GetValue <string>("Cors:Origins");

                    if (!string.IsNullOrEmpty(configuredOrigins))
                    {
                        var allowedOrigins = configuredOrigins.Split(',');

                        builder.WithOrigins(allowedOrigins)
                        .AllowAnyHeader()
                        .AllowAnyMethod();
                    }
                }).UseDefaultFiles().UseStaticFiles());
            },
                                               postConfigure: appBuilder =>
            {
                return(appBuilder.UseAuthentication()
                       .UseAuthorization()
                       .UseBlazorFrameworkFiles()
                       .UseSwagger()
                       .UseSwaggerUI(setup =>
                {
                    setup.EnableDeepLinking();
                    setup.OAuthScopeSeparator(" ");
                    setup.OAuthUsePkce();

                    foreach (var description in apiVersion.ApiVersionDescriptions)
                    {
                        setup.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName);
                    }
                }));
            });
        }
Beispiel #7
0
        public void ConfigureServices(IServiceCollection services)
        {
            services
            .AddSingleton <IDiscoverToggleTypesService, DiscoverToggleTypesService>()
            .AddAuthorization()
            .AddAuthentication(options =>
            {
                options.DefaultScheme          = "secured";
                options.DefaultChallengeScheme = "secured";
            })
            .AddApiKey()
            .AddJwtBearer(options =>
            {
                Configuration.Bind("Security:Jwt", options);
            })
            .AddPolicyScheme("secured", "Authorization Bearer or ApiKey", options =>
            {
                options.ForwardDefaultSelector = context =>
                {
                    var bearer = context.Request.Headers["Authorization"].FirstOrDefault();

                    if (bearer != null && bearer.StartsWith(JwtBearerDefaults.AuthenticationScheme))
                    {
                        return(JwtBearerDefaults.AuthenticationScheme);
                    }

                    return(ApiKeyAuthenticationDefaults.ApiKeyScheme);
                };
            });


            EsquioUIApiConfiguration.ConfigureServices(services)
            .AddScoped <IApiKeyStore, DefaultApiKeyStore>()
            .AddDbContext <StoreDbContext>(options =>
            {
                options.UseSqlServer(Configuration["ConnectionStrings:Esquio"], setup =>
                {
                    setup.MaxBatchSize(10);
                    setup.EnableRetryOnFailure();

                    setup.MigrationsAssembly(typeof(Startup).Assembly.FullName);
                });
            });
        }
Beispiel #8
0
 public void ConfigureServices(IServiceCollection services)
 {
     EsquioUIApiConfiguration.ConfigureServices(services)
     .AddAuthorization()
     .AddAuthentication(setup =>
     {
         setup.DefaultAuthenticateScheme = TestServerDefaults.AuthenticationScheme;
         setup.DefaultChallengeScheme    = TestServerDefaults.AuthenticationScheme;
     })
     .AddTestServer()
     .Services
     .AddDbContext <StoreDbContext>(setup =>
     {
         setup.UseSqlServer(_configuration.GetConnectionString("Esquio"), opt =>
         {
             opt.MigrationsAssembly(typeof(ServerFixture).Assembly.FullName);
         });
     });
 }
Beispiel #9
0
        public void ConfigureServices(IServiceCollection services)
        {
            services
            .AddTransient <IConfigureOptions <SwaggerGenOptions>, ConfigureSwaggerGenOptions>()
            .AddSingleton <IDiscoverToggleTypesService, DiscoverToggleTypesService>()
            .AddResponseCompression(options =>
            {
                options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(
                    new[] { MediaTypeNames.Application.Octet });
            });

            services
            .AddSwaggerGen()
            .AddApplicationInsightsTelemetry()
            .AddAuthentication(options =>
            {
                options.DefaultScheme          = "secured";
                options.DefaultChallengeScheme = "secured";
            })
            .AddApiKey()
            .AddJwtBearer(options =>
            {
                Configuration.Bind("Security:OpenId", options);
            })
            .AddPolicyScheme("secured", "Authorization Bearer or ApiKey", options =>
            {
                options.ForwardDefaultSelector = context =>
                {
                    var bearer = context.Request.Headers["Authorization"].FirstOrDefault();

                    if (bearer != null && bearer.StartsWith(JwtBearerDefaults.AuthenticationScheme))
                    {
                        return(JwtBearerDefaults.AuthenticationScheme);
                    }

                    return(ApiKeyAuthenticationDefaults.ApiKeyScheme);
                };
            });

            EsquioUIApiConfiguration.ConfigureServices(services)
            .AddEntityFramework(Configuration["ConnectionStrings:Esquio"])
            .AddHostedService <EsquioMetricsConsumer>();
        }
Beispiel #10
0
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            EsquioUIApiConfiguration.Configure(app,
                                               preConfigure: host =>
            {
                var rewriteOptions = new RewriteOptions()
                                     .AddRewrite(@"^(?!.*(api\/|.*\.(js|css|ico)|fonts\/|img\/|static\/|swagger*|ws\/*)).*$", "index.html", skipRemainingRules: true);

                return(host
                       .UseHttpsRedirection()
                       .UseRewriter(rewriteOptions)
                       .UseDefaultFiles()
                       .UseStaticFiles());
            },
                                               postConfigure: host =>
            {
                return(host
                       .UseAuthentication()
                       .UseAuthorization());
            });
        }