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:
- Instalowanie pakietu nuget
Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices
- Wywołaj metodę
AddRemoteAppServer
rozszerzenia w plikuISystemWebAdapterBuilder
:
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.
- 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ą AddSystemWebAdapters
polecenia .
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.