// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var isDemoMode = Configuration.GetValue <bool>("IsDemoMode"); var connectionString = Configuration.GetConnectionString("DefaultConnection"); // var migrationsAssembly = typeof(Startup).GetTypeInfo().Assembly.GetName().Name; services.AddTransient <IResourceOwnerPasswordValidator, ResourceOwnerPasswordValidator>() .AddTransient <IProfileService, LoginProfileService>() .AddTransient <IAuthRepository, AuthRepository>(); services.AddDbContext <LogInDbContext>(options => { if (isDemoMode) { options.UseInMemoryDatabase("IdentityServerDb"); } else { options.UseSqlServer(connectionString); } }); services.AddMvc(); if (isDemoMode) { services.AddIdentityServer() .AddInMemoryClients(ConfigForDemo.GetClients()) .AddInMemoryIdentityResources(ConfigForDemo.GetIdentityResources()) .AddInMemoryApiResources(ConfigForDemo.GetApiResources()) .AddTestUsers(ConfigForDemo.Get()) .AddInMemoryPersistedGrants() .AddDeveloperSigningCredential(); } else { services.AddIdentityServer() .AddInMemoryIdentityResources(IdentityResourcesConfig.GetIdentityResource()) .AddInMemoryApiResources(ApisConfig.GetApis()) .AddInMemoryClients(ClientConfig.GetClients()) ; } }
public void ConfigureServices(IServiceCollection services) { var identityConfig = this.configuration .GetSection("IdentityConfig"); var allowedOrigins = identityConfig .GetSection("Origins") .Get <string[]>(); var clientId = identityConfig .GetSection("WebClient") .GetValue <string>("Name"); var clientSecret = identityConfig .GetSection("WebClient") .GetValue <string>("Secret"); var authority = identityConfig .GetValue <string>("Authority"); services.AddMvc(options => { var requiredAuthorizedUser = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(requiredAuthorizedUser)); }) .AddJsonOptions(options => { options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Utc; }) .SetCompatibilityVersion(CompatibilityVersion.Version_2_1); services.AddCors(options => options.AddPolicy(Startup.CorsPolicyName, builder => { builder.AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); if (this.environment.IsDevelopment()) { builder.AllowAnyOrigin(); return; } builder.WithOrigins(allowedOrigins); })); services.AddDistributedRedisCache(options => this.configuration.GetSection(Startup.RedisCacheOptions).Bind(options)); services.AddIdentityServer() .AddDeveloperSigningCredential() .AddInMemoryIdentityResources(IdentityResourceConfig.GetIdentityResource()) .AddInMemoryApiResources(ApiResourceConfig.GetApiResource()) .AddInMemoryClients(ClientConfig.GetClients(clientId, clientSecret, allowedOrigins)); services.AddAuthentication(Startup.AuthenticationSchema) .AddIdentityServerAuthentication(options => { options.Authority = authority; options.RequireHttpsMetadata = this.environment.IsProduction(); options.ApiName = ServiceNames.UserService; }); services.Configure <GzipCompressionProviderOptions>(options => options.Level = CompressionLevel.Optimal); services.Configure <AccountConnectionOptions>(options => this.configuration.GetSection(nameof(AccountConnectionOptions)).Bind(options)); services.Configure <ShardConnectionOptions>(options => this.configuration.GetSection(nameof(ShardConnectionOptions)).Bind(options)); services.AddResponseCompression(); }