diff --git a/Source/ProofOfConcept/Program.cs b/Source/ProofOfConcept/Program.cs index 6ef64ee..437d867 100644 --- a/Source/ProofOfConcept/Program.cs +++ b/Source/ProofOfConcept/Program.cs @@ -95,7 +95,10 @@ builder.Services.AddHostedService(); //Build app WebApplication app = builder.Build(); -app.UseForwardedHeaders(new ForwardedHeadersOptions() { ForwardedHeaders = ForwardedHeaders.All }); +ForwardedHeadersOptions forwardedHeadersOptions = new ForwardedHeadersOptions() { ForwardedHeaders = ForwardedHeaders.All }; +forwardedHeadersOptions.KnownNetworks.Clear(); +forwardedHeadersOptions.KnownProxies.Clear(); +app.UseForwardedHeaders(forwardedHeadersOptions); if (app.Environment.IsDevelopment()) { @@ -141,7 +144,41 @@ if (app.Environment.IsDevelopment()) var ctx = httpContextAccessor.HttpContext!; var request = ctx.Request; - return $"{request.Scheme}://{request.Host}/token-exchange"; + Dictionary headers = new Dictionary(); + headers.Add("Host", request.Host.Value ?? ""); + headers.Add("Scheme", request.Scheme); + headers.Add("Method", request.Method); + headers.Add("Path", request.Path.Value ?? ""); + headers.Add("QueryString", request.QueryString.Value ?? ""); + headers.Add("RemoteIpAddress", ctx.Connection.RemoteIpAddress?.ToString() ?? ""); + headers.Add("RemotePort", ctx.Connection.RemotePort.ToString()); + headers.Add("LocalIpAddress", ctx.Connection.LocalIpAddress?.ToString() ?? ""); + headers.Add("LocalPort", ctx.Connection.LocalPort.ToString()); + headers.Add("IsHttps", request.IsHttps.ToString()); + headers.Add("X-Forwarded-For", request.Headers["X-Forwarded-For"].ToString()); + headers.Add("X-Forwarded-Proto", request.Headers["X-Forwarded-Proto"].ToString()); + headers.Add("X-Forwarded-Host", request.Headers["X-Forwarded-Host"].ToString()); + headers.Add("X-Forwarded-Port", request.Headers["X-Forwarded-Port"].ToString()); + headers.Add("X-Forwarded-Prefix", request.Headers["X-Forwarded-Prefix"].ToString()); + headers.Add("X-Forwarded-Server", request.Headers["X-Forwarded-Server"].ToString()); + headers.Add("X-Forwarded-Path", request.Headers["X-Forwarded-Path"].ToString()); + headers.Add("X-Forwarded-PathBase", request.Headers["X-Forwarded-PathBase"].ToString()); + headers.Add("X-Forwarded-Query", request.Headers["X-Forwarded-Query"].ToString()); + headers.Add("X-Forwarded-Query-String", request.Headers["X-Forwarded-Query-String"].ToString()); + headers.Add("Connection", request.Headers["Connection"].ToString()); + headers.Add("Accept", request.Headers["Accept"].ToString()); + headers.Add("Accept-Encoding", request.Headers["Accept-Encoding"].ToString()); + headers.Add("Accept-Language", request.Headers["Accept-Language"].ToString()); + headers.Add("Cache-Control", request.Headers["Cache-Control"].ToString()); + headers.Add("Content-Length", request.Headers["Content-Length"].ToString()); + headers.Add("Content-Type", request.Headers["Content-Type"].ToString()); + headers.Add("Cookie", request.Headers["Cookie"].ToString()); + headers.Add("Pragma", request.Headers["Pragma"].ToString()); + headers.Add("Referer", request.Headers["Referer"].ToString()); + + String json = JsonSerializer.Serialize(headers, new JsonSerializerOptions() { WriteIndented = true }); + + return json; }); }