// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.RegisterInterface(); services.AddAutoMapper(typeof(CoreProfile)); ConfigureRepository.ConfigureDepedenciesRepository(services); services.AddControllers().AddFluentValidation(fvc => fvc.RegisterValidatorsFromAssemblyContaining <Startup>()); var singinConfigurations = new SignInConfigurations(); services.AddSingleton(singinConfigurations); var tokenConfiguration = new TokenConfigurations(); new ConfigureFromConfigurationOptions <TokenConfigurations>( Configuration.GetSection("TokenConfigurations")).Configure(tokenConfiguration); services.AddSingleton(tokenConfiguration); services.AddAuthentication(authOp => { authOp.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; authOp.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(bearerOp => { var paramsValidation = bearerOp.TokenValidationParameters; paramsValidation.IssuerSigningKey = singinConfigurations.Key; paramsValidation.ValidAudience = tokenConfiguration.Audience; paramsValidation.ValidIssuer = tokenConfiguration.Isseur; paramsValidation.ValidateIssuerSigningKey = true; paramsValidation.ValidateLifetime = true; paramsValidation.ClockSkew = TimeSpan.Zero; }); services.AddAuthorization(authOp => { authOp.AddPolicy("Bearer", new AuthorizationPolicyBuilder() .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme) .RequireAuthenticatedUser().Build()); }); services.AddSwaggerGen(s => { s.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Version = "v1", Title = "Teste Luby", Description = "Projeto desenvolvido com arquitetura DDD.", Contact = new Microsoft.OpenApi.Models.OpenApiContact { Name = "Ronaldo Bruno de Souza Santos", Email = "*****@*****.**" } }); var xmlApiPath = Path.Combine(AppContext.BaseDirectory, $"{typeof(Startup).Assembly.GetName().Name}.xml"); var xmlDataContractPath = Path.Combine(AppContext.BaseDirectory, $"{typeof(BaseReponse).Assembly.GetName().Name}.xml"); s.IncludeXmlComments(xmlApiPath); s.IncludeXmlComments(xmlDataContractPath); s.AddSecurityDefinition("Bearer", new Microsoft.OpenApi.Models.OpenApiSecurityScheme { Description = "Enter the token", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey }); s.AddSecurityRequirement(new OpenApiSecurityRequirement { { new OpenApiSecurityScheme { Reference = new OpenApiReference { Id = "Bearer", Type = ReferenceType.SecurityScheme } }, new List <string>() } }); }); }