private void AddAuthentication(IServiceCollection services) { services.AddDefaultIdentity <IdentityUser>(options => options.SignIn.RequireConfirmedAccount = false) .AddEntityFrameworkStores <ApplicationDbContext>(); services .AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = false, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = Configuration["Jwt:Issuer"], ValidAudience = Configuration["Jwt:Audience"], IssuerSigningKey = JwtKeyGenerator.Generate(Configuration["Jwt:SecretKey"]) }; }); }
public void ConfigureServices(IServiceCollection services) { services.Configure <CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => true; options.MinimumSameSitePolicy = SameSiteMode.None; }); // TODO: Add DbContext and IOC services.AddDbContext <DataContext>(options => //options.UseInMemoryDatabase(dbName)); options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); services.AddMvc() .AddControllersAsServices() .SetCompatibilityVersion(CompatibilityVersion.Version_2_1); services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new Info { Title = "Cylinder API", Version = "v1" }); options.AddSecurityDefinition("Bearer", new ApiKeyScheme { Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"", Name = "Authorization", In = "header", Type = "apiKey" }); options.AddSecurityRequirement(new Dictionary <string, IEnumerable <string> > { { "Bearer", new string[] { } } }); options.OperationFilter <FileUploadOperation>(); }); services.AddIdentity <User, Role>(options => { options.Password.RequireDigit = false; options.Password.RequireLowercase = false; options.Password.RequireNonAlphanumeric = false; options.Password.RequireUppercase = false; options.Password.RequiredLength = 0; options.User.RequireUniqueEmail = false; }) .AddEntityFrameworkStores <DataContext>() .AddDefaultTokenProviders(); services .AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = false, ValidateAudience = false, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = Configuration["Jwt:Issuer"], ValidAudience = Configuration["Jwt:Audience"], IssuerSigningKey = JwtKeyGenerator.Generate(Configuration["Jwt:SecretKey"]) }; }); services.AddTransient <JwtTokenGenerator>(); services.AddTransient(typeof(IDomainEventDispatcher), typeof(DomainEventDispatcher)); services.AddTransient(typeof(IUserRepository), typeof(UserRepository)); services.AddMediatR(typeof(VerificationCodeConfirmationCommand)); }