Ejemplo n.º 1
0
        public async Task DeleteEntityAsync(OIDCClientConfigurationEntity entity)
        {
            var entityInDb = _context.OIDCClientConfigurations.Find(entity.Id);

            if (entityInDb != null)
            {
                _context.OIDCClientConfigurations.Remove(entityInDb);
                await _context.SaveChangesAsync();
            }
        }
Ejemplo n.º 2
0
        public async Task <OIDCClientConfigurationEntity> UpsertEntityAsync(
            string downstreamOIDCConfigurationId,
            OIDCClientConfigurationEntity entity)
        {
            var utcNow = DateTime.UtcNow;
            OIDCClientConfigurationEntity result = null;
            var entityInDb = (from item in _context.OIDCClientConfigurations
                              where item.DownstreamOIDCConfigurationFK == downstreamOIDCConfigurationId &&
                              item.Id == entity.Id
                              select item).FirstOrDefault();

            if (entityInDb != null)
            {
                // update
                _entityFrameworkMapperAccessor.MapperIgnoreBaseAndForeignTables.Map(entity, entityInDb);
                result = entity;
            }
            else
            {
                // brand new.
                entity.Id      = GuidS;
                entity.Created = utcNow;
                entity.Updated = utcNow;
                entity.DownstreamOIDCConfigurationFK = downstreamOIDCConfigurationId;
                if (entity.RedirectUris != null)
                {
                    foreach (var ru in entity.RedirectUris)
                    {
                        ru.Id      = GuidS;
                        ru.Created = utcNow;
                        ru.Updated = utcNow;
                    }
                }
                _context.OIDCClientConfigurations.Add(entity);
                result = entity;
            }

            await _context.SaveChangesAsync();

            return(result);
        }
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(
            IApplicationBuilder app,
            IWebHostEnvironment env,
            IServiceProvider serviceProvider,
            ILogger <Startup> logger)
        {
            if (_logger is LoggerBuffered)
            {
                (_logger as LoggerBuffered).CopyToLogger(logger);
            }
            _logger = logger;
            _logger.LogInformation("Configure");
            if (_deferedException != null)
            {
                _logger.LogError(_deferedException.Message);
                throw _deferedException;
            }

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseMigrationsEndPoint();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }
            if (HostingEnvironment.IsDevelopment())
            {
                var admin = serviceProvider.GetRequiredService <IOIDCConsentOrchestratorAdmin>();
                AsyncContext.Run(async() =>
                {
                    await admin.UpsertEntityAsync(new EntityFrameworkCore.ExternalServiceEntity
                    {
                        Description = "Sample External Service",
                        Name        = "sample",
                        Authority   = "https://localhost:9001/api/Consent"
                    });
                    foreach (var item in OIDCOptionStore)
                    {
                        var entity = new DownstreamOIDCConfigurationEntity
                        {
                            Name = item.Key,
                            OIDCClientConfigurations = new List <OIDCClientConfigurationEntity>()
                        };
                        foreach (var clientRecord in item.Value.ClientRecords)
                        {
                            var oidcClientConfigurationEntity          = new OIDCClientConfigurationEntity();
                            oidcClientConfigurationEntity.ClientId     = clientRecord.Key;
                            oidcClientConfigurationEntity.ClientSecret = clientRecord.Value.Secret;
                            oidcClientConfigurationEntity.RedirectUris = new List <RedirectUriEntity>();
                            foreach (var ru in clientRecord.Value.RedirectUris)
                            {
                                oidcClientConfigurationEntity.RedirectUris.Add(new RedirectUriEntity
                                {
                                    RedirectUri = ru
                                });
                            }
                            entity.OIDCClientConfigurations.Add(oidcClientConfigurationEntity);
                        }

                        await admin.UpsertEntityAsync(entity);
                    }
                });
            }


            app.UseHttpsRedirection();
            app.UseStaticFiles();

            app.UseRouting();

            app.UseOIDCPipeline();
            app.UseSession();
            app.UseAuthentication();
            app.UseAuthorization();
            app.UseMiddleware <AuthSessionValidationMiddleware>();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
                endpoints.MapRazorPages();
            });
        }