Пример #1
0
        /// <summary>
        /// BasicForwardedHeadersMiddleware
        /// </summary>
        public BasicForwardedHeadersMiddleware(RequestDelegate next, ILoggerFactory loggerFactory, IOptions <BasicForwardedHeadersOptions> options)
        {
            if (next == null)
            {
                throw new ArgumentNullException(nameof(next));
            }
            if (loggerFactory == null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            // Make sure required options is not null or whitespace
            EnsureOptionNotNullorWhitespace(options.Value.ForwardedPathBaseHeaderName, nameof(options.Value.ForwardedPathBaseHeaderName));
            EnsureOptionNotNullorWhitespace(options.Value.ForwardedBaseUrlHeaderName, nameof(options.Value.ForwardedBaseUrlHeaderName));
            EnsureOptionNotNullorWhitespace(options.Value.OriginalPathHeaderName, nameof(options.Value.OriginalPathHeaderName));
            EnsureOptionNotNullorWhitespace(options.Value.OriginalForHeaderName, nameof(options.Value.OriginalForHeaderName));
            EnsureOptionNotNullorWhitespace(options.Value.OriginalHostHeaderName, nameof(options.Value.OriginalHostHeaderName));
            EnsureOptionNotNullorWhitespace(options.Value.OriginalProtoHeaderName, nameof(options.Value.OriginalProtoHeaderName));

            _options = options.Value;
            _logger  = loggerFactory.CreateLogger <BasicForwardedHeadersMiddleware>();
            _next    = next;

            //PreProcessHosts();
        }
Пример #2
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
            }

            app.UseStaticFiles();
            app.UseCookiePolicy();

            var basicForwardedHeadersOptions = new BasicForwardedHeadersOptions()
            {
                ForwardedHeaders = BasicForwardedHeaders.IntranetPenetration | BasicForwardedHeaders.XForwardedPathBase
            };

            app.UseBasicForwardedHeaders(basicForwardedHeadersOptions);

            app.UseRouting();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
                endpoints.MapRazorPages();
            });
        }
Пример #3
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseDatabaseErrorPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/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();
            }
            app.UseHttpsRedirection();
            app.UseStaticFiles();

            // 代理服务器
            var forwardedHeadersOptions = new ForwardedHeadersOptions()
            {
                ForwardedHeaders = Microsoft.AspNetCore.HttpOverrides.ForwardedHeaders.All
            };

            forwardedHeadersOptions.KnownNetworks.Clear();
            forwardedHeadersOptions.KnownProxies.Clear();
            forwardedHeadersOptions.KnownProxies.Add(IPAddress.Parse("172.17.0.1"));
            forwardedHeadersOptions.KnownProxies.Add(IPAddress.Parse("172.26.90.90"));
            forwardedHeadersOptions.KnownProxies.Add(IPAddress.Parse("192.168.200.55"));
            app.UseForwardedHeaders(forwardedHeadersOptions);
            var basicForwardedHeadersOptions = new BasicForwardedHeadersOptions()
            {
                ForwardedHeaders = AspNetCore.BasicOverrides.BasicForwardedHeaders.IntranetPenetration | AspNetCore.BasicOverrides.BasicForwardedHeaders.XForwardedPathBase
            };

            app.UseBasicForwardedHeaders(basicForwardedHeadersOptions);

            app.UseRouting();

            app.UseWebSockets();
            app.MapWebSocketManager("/ws", app.ApplicationServices.GetRequiredService <LoginMessageHandler>());

            app.UseIdentityServer(); //IdentityServer4
            app.UseAuthentication();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
                endpoints.MapRazorPages();
            });
        }