Ограничение путей в Kestrel для конкретного порта (фильтрация портов) в .NET Core - PullRequest
0 голосов
/ 31 января 2019

В веб-проекте .NET Core (API, .NET Core 2.2, Kestrel) я реализовал Microsoft.AspNetCore.Diagnostics.HealthChecks.

Проверки работоспособности поддерживают параметры, доступные через определенный порт.

С этого момента для новых функций я получаю требование ограничить вызовы «портом управления» (тем же, который используют проверки работоспособности).

Так что мойВопрос в том, как реализовать фильтр портов, разрешающий вызовы на определенные пути только тогда, когда они приходят через определенный порт?(как в случае проверки работоспособности).

Сценарий: приложение работает на стандартном порту 5000.

Kestrel определил прослушивание двух портов

  WebHost.CreateDefaultBuilder(args)

  // ...

  .UseStartup<Startup>()
  .ConfigureKestrel((context, options) =>
    {
      int regularPort = 5000;
      int managementPort = 5001;

      options.Listen(IPAddress.Any, regularPort);
      options.Listen(IPAddress.Any, managementPort);
    }
  )
  ;

Сейчасв методе настройки запуска я использую

 app.UseHealthChecks("/health/ready", managementPort, ...

, что позволяет мне получить доступ к / health / ready только через 5001.

Но через 5001 все остальное также достижимо.В любом случае, чтобы отключить это?

Теперь другие функции (метрики) и т. Д. Также должны быть доступны более 5001, но не более 5000.

...