// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { //Inject AppSettings services.Configure <ApplicationSettings>(Configuration.GetSection("ApplicationSettings")); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); // Mappers MapperConfiguration.Configuration(); services.AddDbContext <ApplicactionDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("NetTestSqlServer:ConnectionString"))); services.AddDefaultIdentity <ApplicationUser>().AddRoles <IdentityRole>().AddEntityFrameworkStores <ApplicactionDbContext>(); services.Configure <IdentityOptions>(options => { options.Password.RequireDigit = false; options.Password.RequireNonAlphanumeric = false; options.Password.RequireLowercase = false; options.Password.RequireUppercase = false; options.Password.RequiredLength = 4; options.SignIn.RequireConfirmedEmail = false; }); services.Configure <DataProtectionTokenProviderOptions>(options => { options.TokenLifespan = TimeSpan.FromMinutes(5); }); services.AddCors(); //Jwt Authentication var key = Encoding.UTF8.GetBytes(Configuration["ApplicationSettings:JWT_Secret"].ToString()); services.AddAuthentication(x => { x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; x.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(x => { x.RequireHttpsMetadata = false; x.SaveToken = false; x.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(key), ValidateIssuer = false, ValidateAudience = false, ClockSkew = TimeSpan.Zero }; }); MySettingModel.SetNetTestConecction(Configuration.GetConnectionString("NetTestSqlServer:ConnectionString")); services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo { Title = "Net Test", Version = "v1" }); c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme { In = ParameterLocation.Header, Description = "Please insert JWT with Bearer into field, example:'bearer tokenJWT' ", Name = "Authorization", Type = SecuritySchemeType.ApiKey }); c.AddSecurityRequirement(new OpenApiSecurityRequirement { { new OpenApiSecurityScheme { Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } }, new string[] { } } }); // Set the comments path for the Swagger JSON and UI. var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); c.IncludeXmlComments(xmlPath); }); }