public override void ConfigureServices(IServiceCollection services) { var authAppSettings = Config.GetSectionAppSettings <AuthAppSettings>(AppSettingsConstants.Auth); var keyVaultAppSettings = Config.GetSectionAppSettings <KeyVaultAppSettings>(AppSettingsConstants.KeyVault); var swaggerAppSettings = Config.GetSectionAppSettings <SwaggerAppSettings>(AppSettingsConstants.Swagger); var authenticationExtensionConfig = new AuthenticationExtensionConfig(Env, ApiResourcesConstants.RivaIdentityApiResource.Name, authAppSettings.Authority, AuthenticationExtension.JwtBearerAuthenticationScheme, keyVaultAppSettings.Name, keyVaultAppSettings.SigningCredentialCertificateName); var authorizationExtensionConfig = new AuthorizationExtensionConfig( ApiResourcesConstants.RivaIdentityApiResource.Name, ResourceOwnerPolicy.CreateResourceOwnerPolicy()); var swaggerExtensionConfig = new SwaggerExtensionConfig(ApiResourcesConstants.RivaIdentityApiResource.Name, swaggerAppSettings.IdentityUrl); var webApiExtensionConfig = new WebApiExtensionConfig(Env, typeof(Startup).GetTypeInfo().Assembly, authorizationExtensionConfig, authenticationExtensionConfig, swaggerExtensionConfig, typeof(Startup).Assembly, typeof(AccountProfile).Assembly); services .AddWebApiForIntegrationTest(webApiExtensionConfig) .AddAuthorizationHandlers() .AddHealthChecks(Config) .AddAppSettings(Config) .AddIntegrationEventBus(Config.GetSectionAppSettings <ConnectionStringsAppSettings>(AppSettingsConstants.ConnectionStrings).CentralServiceBusConnectionString, Config.GetSectionAppSettings <CentralServiceBusAppSettings>(AppSettingsConstants.CentralServiceBus).SubscriptionName) .AddDependencies() .AddDbContext <RivaIdentityDbContext>(SqlServerConfigurator.Configure(services, Config, Env)) .AddDomainEventsStore <RivaIdentityDbContext>() .AddHttpContextAccessor(); }
public static IServiceCollection AddWebApi(this IServiceCollection services, IConfiguration config, IWebHostEnvironment env) { var authAppSettings = config.GetSectionAppSettings <AuthAppSettings>(AppSettingsConstants.Auth); var keyVaultAppSettings = config.GetSectionAppSettings <KeyVaultAppSettings>(AppSettingsConstants.KeyVault); var swaggerAppSettings = config.GetSectionAppSettings <SwaggerAppSettings>(AppSettingsConstants.Swagger); var authenticationExtensionConfig = new AuthenticationExtensionConfig(env, ApiResourcesConstants.RivaSignalRApiResource.Name, authAppSettings.Authority, AuthenticationExtension.JwtBearerAuthenticationScheme, keyVaultAppSettings.Name, keyVaultAppSettings.SigningCredentialCertificateName); var authorizationExtensionConfig = new AuthorizationExtensionConfig(ApiResourcesConstants.RivaSignalRApiResource.Name); var swaggerExtensionConfig = new SwaggerExtensionConfig(ApiResourcesConstants.RivaSignalRApiResource.Name, swaggerAppSettings.IdentityUrl); var webApiExtensionConfig = new WebApiExtensionConfig(env, typeof(Startup).GetTypeInfo().Assembly, authorizationExtensionConfig, authenticationExtensionConfig, swaggerExtensionConfig, typeof(Startup).Assembly, typeof(Startup).Assembly); return(services.AddWebApi(webApiExtensionConfig)); }
public override void ConfigureServices(IServiceCollection services) { var authAppSettings = Config.GetSectionAppSettings <AuthAppSettings>(AppSettingsConstants.Auth); var keyVaultAppSettings = Config.GetSectionAppSettings <KeyVaultAppSettings>(AppSettingsConstants.KeyVault); var swaggerAppSettings = Config.GetSectionAppSettings <SwaggerAppSettings>(AppSettingsConstants.Swagger); var authenticationExtensionConfig = new AuthenticationExtensionConfig(Env, ApiResourcesConstants.RivaAdministrativeDivisionsApiResource.Name, authAppSettings.Authority, AuthenticationExtension.JwtBearerAuthenticationScheme, keyVaultAppSettings.Name, keyVaultAppSettings.SigningCredentialCertificateName); var authorizationExtensionConfig = new AuthorizationExtensionConfig(ApiResourcesConstants.RivaAdministrativeDivisionsApiResource.Name); var swaggerExtensionConfig = new SwaggerExtensionConfig(ApiResourcesConstants.RivaAdministrativeDivisionsApiResource.Name, swaggerAppSettings.IdentityUrl); var webApiExtensionConfig = new WebApiExtensionConfig(Env, typeof(Startup).GetTypeInfo().Assembly, authorizationExtensionConfig, authenticationExtensionConfig, swaggerExtensionConfig, typeof(Startup).Assembly, typeof(StateProfile).Assembly); services .AddWebApiForIntegrationTest(webApiExtensionConfig) .AddHealthChecks(Config) .AddMemoryCache() .AddDependencies() .AddDbContext <RivaAdministrativeDivisionsDbContext>(SqlServerConfigurator.Configure(services, Config, Env)); }
public override void ConfigureServices(IServiceCollection services) { var authAppSettings = Config.GetSectionAppSettings <AuthAppSettings>(AppSettingsConstants.Auth); var keyVaultAppSettings = Config.GetSectionAppSettings <KeyVaultAppSettings>(AppSettingsConstants.KeyVault); var swaggerAppSettings = Config.GetSectionAppSettings <SwaggerAppSettings>(AppSettingsConstants.Swagger); var authenticationExtensionConfig = new AuthenticationExtensionConfig(Env, ApiResourcesConstants.RivaAnnouncementsApiResource.Name, authAppSettings.Authority, AuthenticationExtension.JwtBearerAuthenticationScheme, keyVaultAppSettings.Name, keyVaultAppSettings.SigningCredentialCertificateName); var authorizationExtensionConfig = new AuthorizationExtensionConfig(ApiResourcesConstants.RivaAnnouncementsApiResource.Name); var swaggerExtensionConfig = new SwaggerExtensionConfig(ApiResourcesConstants.RivaAnnouncementsApiResource.Name, swaggerAppSettings.IdentityUrl); var webApiExtensionConfig = new WebApiExtensionConfig(Env, typeof(Startup).GetTypeInfo().Assembly, authorizationExtensionConfig, authenticationExtensionConfig, swaggerExtensionConfig, typeof(Startup).Assembly, typeof(RoomForRentAnnouncementProfile).Assembly); services .AddWebApiForIntegrationTest(webApiExtensionConfig) .AddHttpContextAccessor() .AddHealthChecks(Config) .AddCosmonaut(Config) .AddAppSettings(Config) .AddDependencies(); }
public static IServiceCollection AddSwagger(this IServiceCollection services, SwaggerExtensionConfig config) { return(services.AddSwaggerGen(options => { options.DescribeAllParametersInCamelCase(); options.DocInclusionPredicate((docName, apiDesc) => { if (!apiDesc.TryGetMethodInfo(out var methodInfo)) { return false; } var versions = methodInfo.DeclaringType?.GetCustomAttributes(true) .OfType <ApiVersionAttribute>() .SelectMany(attr => attr.Versions); return versions !.Any(v => $"v{v.MajorVersion}" == docName); }); options.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme { Type = SecuritySchemeType.OAuth2, Flows = new OpenApiOAuthFlows { Implicit = new OpenApiOAuthFlow { AuthorizationUrl = new Uri($"{config.IdentityUrl}/connect/authorize"), TokenUrl = new Uri($"{config.IdentityUrl}/connect/token"), Scopes = new Dictionary <string, string> { { config.ApiResourceName, "Access to API operations" } } } } }); options.EnableAnnotations(); options.IgnoreObsoleteActions(); options.IgnoreObsoleteProperties(); options.OperationFilter <ApiVersionRequestParamOperationFilter>(); options.OperationFilter <IfMatchRequestParamOperationFilter>(); options.OperationFilter <UnauthorizedResponseOperationFilter>(config.ApiResourceName); options.OperationFilter <ForbiddenResponseOperationFilter>(); options.OperationFilter <NotFoundResponseOperationFilter>(); options.OperationFilter <PreconditionFailedResponseOperationFilter>(); options.OperationFilter <UnprocessableEntityResponseOperationFilter>(); options.OperationFilter <PreconditionRequiredResponseOperationFilter>(); var provider = services.BuildServiceProvider().GetRequiredService <IApiVersionDescriptionProvider>(); foreach (var description in provider.ApiVersionDescriptions) { options.SwaggerDoc($"v{description.ApiVersion.MajorVersion}", new OpenApiInfo { Title = $"{config.ApiResourceName} API V{description.ApiVersion.MajorVersion}", Version = $"v{description.ApiVersion.MajorVersion}" }); } })); }