コード例 #1
0
        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();
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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();
        }
コード例 #5
0
        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}"
                    });
                }
            }));
        }