public IServiceProvider ConfigureServices(IServiceCollection services) { services.AddMvc().AddFluentValidation( fvc => { fvc.RegisterValidatorsFromAssemblyContaining <Startup>(); }); services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>(); services.AddTransient((p) => { return(services); }); var builder = new ContainerBuilder(); builder.Populate(services); Bootstraper.DoTheMagic(builder); var container = builder.Build(); IAuthenticationProvider AuthenticationProvider = container.Resolve <IAuthenticationProvider>(); AuthenticationProvider.InitializeAuthentication(services); // set up authentication var key = Encoding.ASCII.GetBytes("alskdfj2398r49qhroqh9238yroinehofiuy3h948rhoiefa"); services.AddAuthentication(x => { x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(x => { x.RequireHttpsMetadata = false; x.SaveToken = true; x.TokenValidationParameters = new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(key), ValidateIssuer = false, ValidateAudience = false }; }); return(container.Resolve <IServiceProvider>()); }