// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { ConfigureService.ConfigureDependeciesService(services); ConfigureRepository.configureDependenceRepository(services); var signingConfigurations = new SigningConfiguration(); services.AddSingleton(signingConfigurations); var tokenConfigurations = new TokenConfiguration(); new ConfigureFromConfigurationOptions <TokenConfiguration>( Configuration.GetSection("TokenConfigurations")) .Configure(tokenConfigurations); services.AddSingleton(tokenConfigurations); services.AddAuthentication(authOptions => { authOptions.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; authOptions.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(barerOptions => { var paramsValidation = barerOptions.TokenValidationParameters; paramsValidation.IssuerSigningKey = signingConfigurations.Key; paramsValidation.ValidAudience = tokenConfigurations.Audience; paramsValidation.ValidIssuer = tokenConfigurations.Issuer; paramsValidation.ValidateIssuerSigningKey = true; paramsValidation.ValidateLifetime = true; paramsValidation.ClockSkew = TimeSpan.Zero; } ); services.AddAuthorization(auth => { auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder() .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme) .RequireAuthenticatedUser().Build()); }); services.AddControllers(); var config = new AutoMapper.MapperConfiguration( config => { config.AddProfile(new DtoToModelProfile()); config.AddProfile(new EntityToDtoProfile()); config.AddProfile(new ModelToEntityProfile()); } ); IMapper mapper = config.CreateMapper(); services.AddSingleton(mapper); services.AddSwaggerGen( configuration => { configuration.SwaggerDoc("v1", new OpenApiInfo { Version = "v1", Title = "Aprendendo DDD", Description = "Arquitetura DDD", TermsOfService = new Uri("http://www.cin.ufpe.br/~ans3"), Contact = new OpenApiContact { Name = "Adriano Santana", Email = "*****@*****.**", Url = new Uri("http://www.cin.ufpe.br/~ans3") } }); configuration.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme { Description = "Inserir token Jwt", Name = "Authorization", In = ParameterLocation.Header, Type = SecuritySchemeType.ApiKey }); configuration.AddSecurityRequirement(new OpenApiSecurityRequirement { { new OpenApiSecurityScheme { Reference = new OpenApiReference { Id = "Bearer", Type = ReferenceType.SecurityScheme } }, new List <string>() } }); } ); }