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 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); }
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(); }