Example #1
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc();
            new IocFactory().Initialize(services);
            var builder = services.AddIdentityServer();

            services.AddIdentity <ApplicationUser, IdentityRole <int> >()
            .AddEntityFrameworkStores <MyDbContext>()
            .AddDefaultTokenProviders();

            builder.AddDeveloperSigningCredential()
            .AddInMemoryIdentityResources(IdentityResourceConfig.GetIdentityResources())
            .AddInMemoryApiResources(IdentityApiResourceConfig.GetApiResources())
            .AddInMemoryClients(Clients.Get())
            .AddAspNetIdentity <ApplicationUser>();
            //.AddTestUsers(IdentityTestUsersConfig.GetUsers());


            AutoMapper.Mapper.Initialize(cfg =>
            {
                cfg.AddProfile <DatabaseProfile>();
                cfg.CreateMissingTypeMaps = true;
            });
        }
        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();
        }