Udostępnij za pośrednictwem


Konfiguracja aplikacji zdalnej

W niektórych scenariuszach uaktualniania przyrostowego przydatne jest, aby nowa aplikacja ASP.NET Core mogła komunikować się z oryginalną aplikacją ASP.NET.

W szczególności ta funkcja jest obecnie używana do zdalnego uwierzytelniania aplikacji i funkcji sesji zdalnej.

Konfigurowanie

Aby umożliwić aplikacji ASP.NET Core komunikowanie się z aplikacją ASP.NET, należy wprowadzić kilka małych zmian w każdej aplikacji.

konfiguracja aplikacji ASP.NET

Aby skonfigurować aplikację ASP.NET w celu odbierania żądań z aplikacji ASP.NET Core:

  1. Instalowanie pakietu nuget Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices
  2. Wywołaj metodę AddRemoteAppServer rozszerzenia w pliku ISystemWebAdapterBuilder:
SystemWebAdapterConfiguration.AddSystemWebAdapters(this)
    .AddRemoteAppServer(options =>
    {
        // ApiKey is a string representing a GUID
        options.ApiKey = ConfigurationManager.AppSettings["RemoteAppApiKey"];
    });

W metodzie konfiguracji opcji przekazanej do wywołania należy określić klucz interfejsu AddRemoteAppServer API. Klucz interfejsu API to:

  • Służy do zabezpieczania punktu końcowego tak, aby tylko zaufane osoby wywołujące mogły wysyłać do niego żądania.
  • Ten sam klucz interfejsu API dostarczony do aplikacji ASP.NET Core podczas jej konfigurowania.
  • Ciąg i musi być analizowany jako identyfikator GUID. Łączniki w kluczu są opcjonalne.
  1. Opcjonalnie: dodaj moduł do modułu web.config SystemWebAdapterModule, jeśli nie został jeszcze dodany przez narzędzie NuGet. Moduł SystemWebAdapterModule nie jest dodawany automatycznie podczas korzystania z projektów stylu zestawu SDK dla platformy ASP.NET Core.
  <system.webServer>
    <modules>
+      <remove name="SystemWebAdapterModule" />
+      <add name="SystemWebAdapterModule" type="Microsoft.AspNetCore.SystemWebAdapters.SystemWebAdapterModule, Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices" preCondition="managedHandler" />
    </modules>
</system.webServer>

Aplikacja ASP.NET Core

Aby skonfigurować aplikację ASP.NET Core w celu wysyłania żądań do aplikacji ASP.NET, należy wprowadzić podobną zmianę, wywołując wywołanie AddRemoteApp po zarejestrowaniu usług adaptera System.Web za pomocą AddSystemWebAdapterspolecenia .

builder.Services.AddSystemWebAdapters()
    .AddRemoteAppClient(options =>
    {
        options.RemoteAppUrl = new(builder.Configuration["ReverseProxy:Clusters:fallbackCluster:Destinations:fallbackApp:Address"]);
        options.ApiKey = builder.Configuration["RemoteAppApiKey"];
    });

Powyższy kod:

  • Wywołanie AddRemoteApp służy do konfigurowania adresu URL aplikacji zdalnej i klucza wspólnego tajnego interfejsu API.
  • Właściwość RemoteAppUrl określa adres URL aplikacji ASP.NET Framework, z którą komunikuje się aplikacja ASP.NET Core. W tym przykładzie adres URL jest odczytywany z istniejącego ustawienia konfiguracji używanego przez serwer proxy YARP, który serwer proxy wysyła żądania do aplikacji platformy ASP.NET Framework w ramach wzorca fig uduszonej migracji przyrostowej.

W przypadku zaktualizowania aplikacji ASP.NET i ASP.NET Core metody rozszerzeń można teraz użyć do skonfigurowania zdalnego uwierzytelniania aplikacji lub sesji zdalnej zgodnie z potrzebami.

Zabezpieczanie połączenia aplikacji zdalnej

Ponieważ funkcje aplikacji zdalnej obejmują obsługę żądań w nowych punktach końcowych z aplikacji ASP.NET, ważne jest, aby komunikacja z aplikacją ASP.NET i z niej była bezpieczna.

Najpierw upewnij się, że ciąg klucza interfejsu API używany do uwierzytelniania aplikacji ASP.NET Core za pomocą aplikacji ASP.NET jest unikatowy i przechowywany w tajemnicy. Najlepszym rozwiązaniem jest nie przechowywanie klucza interfejsu API w kontroli źródła. Zamiast tego załaduj go w czasie wykonywania z bezpiecznego źródła, takiego jak usługa Azure Key Vault lub inna bezpieczna konfiguracja środowiska uruchomieniowego. Aby zachęcić bezpieczne klucze interfejsu API, połączenia aplikacji zdalnych wymagają, aby klucze niepuste identyfikatory GUID (128-bitowe numery szesnastowe).

Po drugie, ponieważ ważne jest, aby aplikacja ASP.NET Core mogła ufać, że żąda informacji z odpowiedniej aplikacji ASP.NET, aplikacja ASP.NET powinna używać protokołu HTTPS w dowolnych scenariuszach produkcyjnych, aby aplikacja ASP.NET Core mogła wiedzieć, że odpowiedzi są obsługiwane przez zaufane źródło.