public void ConfigureServices()

in src/Services/User/User.IdentityServer/Startup.cs [51:98]


        public void ConfigureServices(IServiceCollection services)
        {
            services.AddSerilogWithInsights<Startup>(Configuration);

            services.AddInfrastructure(Configuration);

            IHealthChecksBuilder healthCheckBuilder = services.AddHealthChecks()
                .AddDbContextCheck<ApplicationDbContext>();

            IIdentityServerBuilder builder = services.AddIdentityServer()
                .AddAspNetIdentity<ApplicationUser>()
                .AddProfileService<RolesProfileService>()
                .AddResourceOwnerValidator<ResourceOwnerPasswordValidator<ApplicationUser>>();

            if (Environment.IsDevelopment())
            {
                builder.AddDeveloperSigningCredential();

                builder.AddInMemoryIdentityResources(Config.Ids)
                    .AddInMemoryApiResources(Config.Apis)
                    .AddInMemoryClients(Config.Clients);
            }
            else
            {
                healthCheckBuilder
                    .AddDbContextCheck<ISConfigurationDbContext>()
                    .AddDbContextCheck<ISPersistedGrantDbContext>();

                builder.AddSigningCredential(GetCertificateAsync(Configuration).Result);

                var identityServerConnectionString = Configuration.GetConnectionString("IdentityServerConnectionString");

                builder
                    .AddConfigurationStore<ISConfigurationDbContext>(options =>
                    {
                        options.ConfigureDbContext = configurationDbBuilder =>
                            configurationDbBuilder.UseNpgsql(identityServerConnectionString);
                    })
                    .AddOperationalStore<ISPersistedGrantDbContext>(options =>
                    {
                        options.ConfigureDbContext = operationalDbBuilder =>
                            operationalDbBuilder.UseNpgsql(identityServerConnectionString);

                        options.EnableTokenCleanup = true;
                        options.TokenCleanupInterval = (int)TimeSpan.FromDays(1).TotalSeconds;
                    });
            }
        }