/// <summary> /// Applies the IS resource configuration seed /// </summary> /// <param name="context"> /// DbContext for the IdentityServer configuration data /// </param> /// <param name="env">App environment</param> /// <param name="logger">App logger</param> /// <param name="settings">App settings</param> /// <param name="clientSettings">Client settings</param> /// <returns></returns> public async Task EnsureSeedData(ConfigurationDbContext context, IHostingEnvironment env, ILogger <ConfigurationDbContext> logger, IOptions <AppSettings> settings, IOptions <ClientSettings> clientSettings) { var appSettings = settings.Value; var clientUrlSettings = clientSettings.Value; Console.WriteLine("Seeding database..."); if (!context.Clients.Any()) { Console.WriteLine("Clients being populated"); foreach (var client in Config.GetClients(clientUrlSettings).ToList()) { await context.Clients.AddAsync(client.ToEntity()); } await context.SaveChangesAsync(); } else { Console.WriteLine("Clients already populated"); } if (!context.IdentityResources.Any()) { Console.WriteLine("IdentityResources being populated"); foreach (var resource in Config.GetIdentityResources().ToList()) { await context.IdentityResources.AddAsync(resource.ToEntity()); } await context.SaveChangesAsync(); } else { Console.WriteLine("IdentityResources already populated"); } if (!context.ApiResources.Any()) { Console.WriteLine("ApiResources being populated"); foreach (var resource in Config.GetApis().ToList()) { await context.ApiResources.AddAsync(resource.ToEntity()); } await context.SaveChangesAsync(); } else { Console.WriteLine("ApiResources already populated"); } Console.WriteLine("Done seeding database."); Console.WriteLine(); }
public async Task SeedAsync() { try { Config config = await GetConfig(); if (!_context.Clients.Any()) { _logger.LogInformation("Clients being populated"); foreach (IdentityServer4.Models.Client client in config.Clients) { _context.Clients.Add(client.ToEntity()); } await _context.SaveChangesAsync(); } else { _logger.LogInformation("Clients already populated"); } if (!_context.IdentityResources.Any()) { _logger.LogInformation("IdentityResources being populated"); foreach (IdentityServer4.Models.IdentityResource resource in config.IdentityResources) { _context.IdentityResources.Add(resource.ToEntity()); } await _context.SaveChangesAsync(); } else { _logger.LogInformation("IdentityResources already populated"); } if (!_context.ApiResources.Any()) { _logger.LogInformation("ApiResources being populated"); foreach (IdentityServer4.Models.ApiResource resource in config.ApiResources) { _context.ApiResources.Add(resource.ToEntity()); } await _context.SaveChangesAsync(); } else { _logger.LogInformation("ApiResources already populated"); } } catch (Exception e) { _logger.LogError(e, "SeedAsync"); } }
public async Task SeedAsync(ConfigurationDbContext context, IConfiguration configuration) { //callbacks urls from config: var clientUrls = new Dictionary <string, string>(); clientUrls.Add(configuration["Clients:WebClient1:ClientId"], configuration["Clients:WebClient1:ClientUri"]); clientUrls.Add(configuration["Clients:WebClient2:ClientId"], configuration["Clients:WebClient2:ClientUri"]); clientUrls.Add(configuration["Clients:ApiClient1:ClientId"], configuration["Clients:ApiClient1:ClientUri"]); clientUrls.Add(configuration["Clients:ApiClient2:ClientId"], configuration["Clients:ApiClient2:ClientUri"]); if (!context.Clients.Any()) { foreach (var client in Config.GetClients(clientUrls)) { context.Clients.Add(client.ToEntity()); } await context.SaveChangesAsync(); } if (!context.IdentityResources.Any()) { foreach (var resource in Config.GetResources()) { context.IdentityResources.Add(resource.ToEntity()); } await context.SaveChangesAsync(); } if (!context.ApiResources.Any()) { foreach (var api in Config.GetApis()) { context.ApiResources.Add(api.ToEntity()); } await context.SaveChangesAsync(); } if (!context.ApiScopes.Any()) { foreach (var scope in Config.GetApiScopes()) { context.ApiScopes.Add(scope.ToEntity()); } await context.SaveChangesAsync(); } }
public async Task SeedAsync(ConfigurationDbContext context, IConfiguration configuration) { if (!context.Clients.Any()) { foreach (var client in Config.GetClients(configuration)) { context.Clients.Add(client.ToEntity()); } await context.SaveChangesAsync(); } if (!context.IdentityResources.Any()) { foreach (var resource in Config.IdentityResources) { context.IdentityResources.Add(resource.ToEntity()); } await context.SaveChangesAsync(); } // register scopes before resources see: http://docs.identityserver.io/en/latest/topics/resources.html // To migrate to v4 you need to split up scope and resource registration, typically by first registering all your scopes if (!context.ApiScopes.Any()) { foreach (var api in Config.ApiScopes) { context.ApiScopes.Add(api.ToEntity()); } await context.SaveChangesAsync(); } //register resources after scopes see: http://docs.identityserver.io/en/latest/topics/resources.html if (!context.ApiResources.Any()) { foreach (var api in Config.ApiResources) { context.ApiResources.Add(api.ToEntity()); } await context.SaveChangesAsync(); } }
/// <summary> /// Creates sample clients, scopes and resources /// </summary> /// <param name="context">Database context</param> /// <param name="configuration">Application configuration provider</param> /// <returns>Task object representing the asynchronous operation</returns> public async Task SeedAsync(ConfigurationDbContext context, IConfiguration configuration) { var clientUrl = configuration.GetValue <string>("WeatherApiClient"); if (!context.Clients.Any()) { foreach (var client in Config.Clients(clientUrl)) { await context.Clients.AddAsync(client.ToEntity()); } await context.SaveChangesAsync(); } else { var oldRedirects = (await context.Clients.Include(c => c.RedirectUris) .ToListAsync()) .SelectMany(c => c.RedirectUris) .Where(ru => ru.RedirectUri.EndsWith("/o2c.html")) .ToList(); if (oldRedirects.Any()) { foreach (var redirectUri in oldRedirects) { redirectUri.RedirectUri = redirectUri.RedirectUri.Replace("/o2c.html", "/oauth2-redirect.html"); context.Update(redirectUri.Client); } await context.SaveChangesAsync(); } } if (!context.IdentityResources.Any()) { foreach (var resource in Config.Resources()) { await context.IdentityResources.AddAsync(resource.ToEntity()); } await context.SaveChangesAsync(); } if (!context.ApiResources.Any()) { foreach (var api in Config.Apis()) { await context.ApiResources.AddAsync(api.ToEntity()); } await context.SaveChangesAsync(); } if (!context.ApiScopes.Any()) { foreach (var scope in Config.Scopes()) { await context.ApiScopes.AddAsync(scope.ToEntity()); } await context.SaveChangesAsync(); } }