сделать tnet core 3 не читающим X-FORWARDED-HOST на IIS - PullRequest
1 голос
/ 21 января 2020

У меня есть новое приложение do tnet core MVC, которое находится за прокси-сервером ARIS IIS и не читает заголовок X-FORWARDED-HOST.

В частности, мне нужно правильно настроить хост как Я использую openID Connect и ему нужно написать правильные URL-адреса перенаправления.

Он работает на моем сервере VS dev, но не на моем промежуточном сервере.

Теперь весь код использует example.com для замены мой реальный домен.

startup.cs

var forwardingOptions = new ForwardedHeadersOptions()
{
     ForwardedHeaders = ForwardedHeaders.All,
     AllowedHosts = new List<string> { "*.example.com"},
     RequireHeaderSymmetry = false
};
app.UseForwardedHeaders(forwardingOptions);

контроллер:

var ret = new StringBuilder();
foreach (var header in Request.Headers)
{
    ret.AppendLine(header.Key + ":" + header.Value);
}
return Content(Request.Host  + "\r\n"+ret.ToString());

выходной тест (отредактирован для удаления не связанных заголовков)

pc023835.example.com
Host:pc023835.example.com
X-Original-Host:localhost:53848
X-FORWARDED-PORT:443

Этап IIS:

web-test.example.com
Host:web-test.example.com
X-FORWARDED-HOST:newdev.example.com
X-FORWARDED-PORT:443
X-FORWARDED-PROTO:https
X-Original-URL:/file-downloader/
X-Forwarded-For:10.101.40.1:10400
X-ARR-SSL: EDITED OUT
X-ARR-LOG-ID:d2224167-c14f-43e0-af40-86bfd360d22f

Правило перезаписи:

<rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
    <match url="^file-downloader/(.*)" />
    <action type="Rewrite" url="https://web-test.example.com/file-downloader/{R:1}" />
      <serverVariables>
          <set name="HTTP_X_FORWARDED_HOST" value="{HTTP_HOST}" />
          <set name="HTTP_X_FORWARDED_PORT" value="443" />
          <set name="HTTP_X_FORWARDED_PROTO" value="https" />
      </serverVariables>
</rule>
...