private static void ConfigureSwaggerUIOptions(SwaggerUIOptions options, IApiVersionDescriptionProvider provider) { var root = Utility.GetSetting <string>(Settings.AppRoot); foreach (var description in provider.ApiVersionDescriptions) { options.SwaggerEndpoint($"{root}/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant()); } }
private static TokenValidationParameters GetTokenValidationParameters() { return(new TokenValidationParameters { ClockSkew = TimeSpan.FromMinutes(5), RequireSignedTokens = true, RequireExpirationTime = true, ValidateLifetime = true, ValidIssuer = Utility.GetSetting <string>(Settings.JwtIssuer), ValidateIssuer = true, ValidAudience = Utility.GetSetting <string>(Settings.JwtAudience), ValidateAudience = true, IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Utility.GetSetting <string>(Settings.JwtKey))), ValidateIssuerSigningKey = true, }); }
/// <summary> /// Configures services for the application. /// </summary> /// <param name="services">The application services collection.</param> public void ConfigureServices(IServiceCollection services) { services.AddSingleton <ITokenFactory, TokenFactory>(); services.AddSingleton <ITokenValidator, TokenValidator>(serviceProvider => new TokenValidator(GetTokenValidationParameters())); var connectionString = Utility.GetSetting <string>(Settings.DbConnectionString); services.AddSingleton <IDbConnectionFactory, NpgsqlDbConnectionFactory>(serviceProvider => new NpgsqlDbConnectionFactory(connectionString)); services.AddScoped <ISingleKeyRepository <Account>, AccountRepository>(serviceProvider => new AccountRepository(serviceProvider.GetService <IDbConnectionFactory>())); services.AddScoped <ISingleKeyRepository <RefreshToken>, RefreshTokenRepository>(serviceProvider => new RefreshTokenRepository(serviceProvider.GetService <IDbConnectionFactory>())); services.AddScoped <ISingleKeyRepository <Veteran>, VeteranRepository>(serviceProvider => new VeteranRepository(serviceProvider.GetService <IDbConnectionFactory>())); services.AddScoped <ISingleKeyRepository <Service>, ServiceRepository>(serviceProvider => new ServiceRepository(serviceProvider.GetService <IDbConnectionFactory>())); services.AddScoped <ISingleKeyRepository <Event>, EventRepository>(serviceProvider => new EventRepository(serviceProvider.GetService <IDbConnectionFactory>())); services.AddScoped <ITripleKeyRepository <Scan>, ScanRepository>(serviceProvider => new ScanRepository(serviceProvider.GetService <IDbConnectionFactory>())); services.AddScoped <IReportRepository, ReportRepository>(serviceProvider => new ReportRepository(serviceProvider.GetService <IDbConnectionFactory>())); services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => ConfigureJwtBearerOptions(options)); services.AddCors(options => ConfigureCorsOptions(options)); services.AddMvc() .AddJsonOptions(options => ConfigureJsonOptions(options)); services.AddMvcCore() .AddVersionedApiExplorer(options => ConfigureApiExplorerOptions(options)); services.AddApiVersioning(options => ConfigureApiVersioningOptions(options)); services.AddSwaggerGen(options => ConfigureSwaggerGenOptions(options, services)); }