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;
});
}
}