예제 #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 static IServiceCollection AddAuthorization(this IServiceCollection services,
                                                          AuthorizationExtensionConfig config)
        {
            return(services
                   .AddSingleton <IAuthorizationHandler, UserSystemAuthorizationHandler>()
                   .AddSingleton <IAuthorizationHandler, AdministratorSystemAuthorizationHandler>()
                   .AddSingleton <IAuthorizationHandler, SystemAuthorizationHandler>()
                   .AddAuthorization(options =>
            {
                var policyBuilder = new AuthorizationPolicyBuilder()
                                    .RequireAuthenticatedUser()
                                    .RequireClaim(JwtClaimTypes.Scope, config.ApiResourceName)
                                    .AddAuthenticationSchemes(AuthenticationExtension.JwtBearerAuthenticationScheme);
                var userPolicy = policyBuilder
                                 .RequireRole(DefaultRoleEnumeration.User.DisplayName)
                                 .Build();
                var userSystemPolicy = policyBuilder
                                       .AddRequirements(new UserSystemRequirement())
                                       .Build();
                var administratorPolicy = policyBuilder
                                          .RequireRole(DefaultRoleEnumeration.Administrator.DisplayName)
                                          .Build();
                var administratorSystemPolicy = policyBuilder
                                                .AddRequirements(new AdministratorSystemRequirement())
                                                .Build();
                var systemPolicy = policyBuilder
                                   .AddRequirements(new SystemRequirement())
                                   .Build();

                options.DefaultPolicy = userPolicy;
                options.AddPolicy(JwtBearerUserPolicyName, userPolicy);
                options.AddPolicy(JwtBearerUserSystemPolicyName, userSystemPolicy);
                options.AddPolicy(JwtBearerAdministratorPolicyName, administratorPolicy);
                options.AddPolicy(JwtBearerAdministratorSystemPolicyName, administratorSystemPolicy);
                options.AddPolicy(JwtBearerSystemPolicyName, systemPolicy);

                foreach (var policy in config.Policies)
                {
                    options.AddPolicy(policy.Name, policy.Policy);
                }
            }));
        }
예제 #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.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));
        }
예제 #5
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();
        }