public void Setup() { AutoMapperInitialize.Initialize(); }
public void ConfigureServices(IServiceCollection services) { services.AddDbContext <ApplicationContext>(options => { options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")); options.UseOpenIddict(); }); // Add membership services.AddIdentity <IdentityUser, IdentityRole>(options => { // Password settings options.Password.RequireDigit = false; options.Password.RequireLowercase = false; options.Password.RequireNonAlphanumeric = false; options.Password.RequireUppercase = false; options.Password.RequiredLength = 6; options.User.AllowedUserNameCharacters = null; // Confirmation email required for new account options.SignIn.RequireConfirmedEmail = true; // Lockout settings options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(30); options.Lockout.MaxFailedAccessAttempts = 5; }) .AddEntityFrameworkStores <ApplicationContext>() .AddDefaultTokenProviders(); // Register the OAuth2 validation handler. services.AddAuthentication(o => { o.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; }) .AddJwtBearer(options => { options.Audience = "resource-server"; options.Authority = "http://localhost:59515/"; options.RequireHttpsMetadata = false; options.IncludeErrorDetails = true; options.TokenValidationParameters = new TokenValidationParameters { NameClaimType = OpenIdConnectConstants.Claims.Subject, RoleClaimType = OpenIdConnectConstants.Claims.Role }; }); // Configure Identity to use the same JWT claims as OpenIddict instead // of the legacy WS-Federation claims it uses by default (ClaimTypes), // which saves you from doing the mapping in your authorization controller. services.Configure <IdentityOptions>(options => { options.ClaimsIdentity.UserNameClaimType = OpenIdConnectConstants.Claims.Name; options.ClaimsIdentity.UserIdClaimType = OpenIdConnectConstants.Claims.Subject; options.ClaimsIdentity.RoleClaimType = OpenIdConnectConstants.Claims.Role; }); // Register the OpenIddict services. services.AddOpenIddict(options => { // Register the Entity Framework stores. options.AddEntityFrameworkCoreStores <ApplicationContext>(); // Register the ASP.NET Core MVC binder used by OpenIddict. // Note: if you don't call this method, you won't be able to // bind OpenIdConnectRequest or OpenIdConnectResponse parameters. options.AddMvcBinders(); // Enable the token endpoint. options.EnableTokenEndpoint("/connect/token"); // Enable the password flow. options.AllowPasswordFlow(); // During development, you can disable the HTTPS requirement. options.DisableHttpsRequirement(); options.UseJsonWebTokens(); options.AddEphemeralSigningKey(); }); AutoMapperInitialize.Initialize(); services.AddCors(); services.AddMvc() .AddJsonOptions(opts => { // Force Camel Case to JSON opts.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); }); // Without this controller actions are not forbidden if other roles are trying to access services.AddSingleton <IAuthenticationSchemeProvider, CustomAuthenticationSchemeProvider>(); services.AddSingleton(Configuration); }