Example #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();
        }
Example #2
0
        public static IServiceCollection AddJwtAuthentication(this IServiceCollection services,
                                                              AuthenticationExtensionConfig config)
        {
            return(services
                   .AddAuthentication(config.DefaultScheme)
                   .AddJwtBearer(JwtBearerAuthenticationScheme, options =>
            {
                options.Authority = config.Authority;
                options.RequireHttpsMetadata = config.Environment.IsNotLocalOrDocker();
                options.Audience = config.Audience;
                options.IncludeErrorDetails = true;
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateActor = true,
                    ValidateIssuer = true,
                    ValidateAudience = true,
                    ValidateLifetime = true,
                    RequireExpirationTime = true,
                    RequireSignedTokens = true,
                    ValidateIssuerSigningKey = config.Environment.IsNotLocalOrDocker(),
                    ValidAudience = config.Audience,
                    ValidIssuer = config.Authority,
                    AuthenticationType = JwtBearerAuthenticationScheme
                };
                options.Events = new JwtBearerEvents
                {
                    OnMessageReceived = context =>
                    {
                        var accessToken = context.Request.Query["access_token"];
                        var path = context.HttpContext.Request.Path;

                        if (!string.IsNullOrEmpty(accessToken) && path.StartsWithSegments($"/{SignalRHubNameConstants.RivaHub}"))
                        {
                            context.Token = accessToken;
                        }

                        return Task.CompletedTask;
                    }
                };

                if (config.Environment.IsNotLocalOrDocker())
                {
                    var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(new AzureServiceTokenProvider().KeyVaultTokenCallback));
                    var certificateBundle =
                        kv.GetCertificateAsync($"https://{config.KeyVaultName}.vault.azure.net/",
                                               config.SigningCredentialCertificateName).GetAwaiter().GetResult();
                    var certificate = new X509Certificate2(certificateBundle.Cer);
                    options.TokenValidationParameters.IssuerSigningKey = new X509SecurityKey(certificate);
                }
            })
                   .Services);
        }
Example #3
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));
        }
Example #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));
        }
Example #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();
        }