/// <summary> /// init identity data base /// </summary> /// <param name="app"></param> public static void InitializeIdentityDatabase(this IApplicationBuilder app) { using (var serviceScope = app.ApplicationServices.GetService <IServiceScopeFactory>().CreateScope()) { serviceScope.ServiceProvider.GetRequiredService <PersistedGrantDbContext>().Database.Migrate(); var context = serviceScope.ServiceProvider.GetRequiredService <ConfigurationDbContext>(); context.Database.Migrate(); foreach (var item in context.Clients) { context.Clients.Remove(item); } foreach (var item in context.IdentityResources) { context.IdentityResources.Remove(item); } foreach (var item in context.ApiResources) { context.ApiResources.Remove(item); } context.SaveChanges(); if (!context.Clients.Any()) { foreach (var client in IdentityConfig.GetClients()) { context.Clients.Add(client.ToEntity()); } context.SaveChanges(); } if (!context.IdentityResources.Any()) { foreach (var resource in IdentityConfig.GetIdentityResources()) { context.IdentityResources.Add(resource.ToEntity()); } context.SaveChanges(); } if (!context.ApiResources.Any()) { foreach (var resource in IdentityConfig.GetApis()) { context.ApiResources.Add(resource.ToEntity()); } context.SaveChanges(); } } }
public void ConfigureServices(IServiceCollection services) { services.AddDbContext <CodenationContext>(); services.AddScoped <IResourceOwnerPasswordValidator, PasswordValidatorService>(); services.AddScoped <IProfileService, UserProfileService>(); var builder = services.AddIdentityServer() .AddInMemoryIdentityResources(IdentityConfig.GetIdentityResources()) .AddInMemoryApiResources(IdentityConfig.GetApis()) .AddInMemoryClients(IdentityConfig.GetClients()) .AddProfileService <UserProfileService>(); if (Environment.IsDevelopment()) { builder.AddDeveloperSigningCredential(); } else { throw new Exception("ambiente de produção precisa de chave real"); } }
public void ConfigureServices(IServiceCollection services) { //configuração de contexto services.AddDbContext <CodenationContext>(); //adicionar scoped interfaces - services - classe de validação de senha e usuário services.AddScoped <IResourceOwnerPasswordValidator, PasswordValidatorService>(); services.AddScoped <IProfileService, UserProfileService>(); //start classe identityconfig var builder = services.AddIdentityServer() .AddInMemoryIdentityResources(IdentityConfig.GetIdentityResources()) .AddInMemoryApiResources(IdentityConfig.GetApis()) .AddInMemoryClients(IdentityConfig.GetClients()) .AddProfileService <UserProfileService>(); //ambiente if (Environment.IsDevelopment()) { builder.AddDeveloperSigningCredential(); } else { throw new Exception("ambiente de produção precisa de chave real"); } }