Sdílet prostřednictvím


Nastavení vzdálené aplikace

V některých scénářích přírůstkového upgradu je užitečné, aby nová aplikace ASP.NET Core mohla komunikovat s původní aplikací ASP.NET.

Konkrétně se tato funkce používá v současné době pro vzdálené ověřování aplikací a funkce vzdálené relace .

Konfigurace

Pokud chcete aplikaci ASP.NET Core povolit komunikaci s ASP.NET aplikací, je nutné provést v každé aplikaci několik malých změn.

konfigurace aplikace ASP.NET

Nastavení aplikace ASP.NET tak, aby mohla přijímat požadavky z aplikace ASP.NET Core:

  1. Instalace balíčku NuGet Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices
  2. Volání metody rozšíření na AddRemoteAppServer ISystemWebAdapterBuilder:
SystemWebAdapterConfiguration.AddSystemWebAdapters(this)
    .AddRemoteAppServer(options =>
    {
        // ApiKey is a string representing a GUID
        options.ApiKey = ConfigurationManager.AppSettings["RemoteAppApiKey"];
    });

V metodě konfigurace možností předávané volání AddRemoteAppServer musí být zadán klíč rozhraní API. Klíč rozhraní API je:

  • Používá se k zabezpečení koncového bodu, aby na něj mohli požadavky provádět jenom důvěryhodní volající.
  • Stejný klíč rozhraní API poskytnutý aplikaci ASP.NET Core, když je nakonfigurovaný.
  • Řetězec a musí být parsovatelný jako identifikátor GUID. Spojovníky v klíči jsou volitelné.
  1. Volitelné: Přidejte SystemWebAdapterModule modul do web.config modulu, pokud ho ještě nepřidali NuGet. Modul SystemWebAdapterModule se nepřidá automaticky při použití projektů stylu sady SDK pro 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>

Aplikace v ASP.NET Core

Pokud chcete nastavit aplikaci ASP.NET Core tak, aby mohla odesílat požadavky do aplikace ASP.NET, musíte provést podobnou změnu, která volá AddRemoteApp po registraci služeb system.web adaptéru u AddSystemWebAdapters.

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

V předchozím kódu:

  • Volání AddRemoteApp se používá ke konfiguraci adresy URL vzdálené aplikace a klíče sdíleného tajného klíče rozhraní API.
  • Vlastnost RemoteAppUrl určuje adresu URL aplikace ASP.NET Framework, se kterou aplikace ASP.NET Core komunikuje. V tomto příkladu se adresa URL načítá z existujícího nastavení konfigurace používaného proxy serverem YARP, které proxy serveruje požadavky na aplikaci ASP.NET Framework jako součást vzoru škrtiče přírůstkové migrace.

S aktualizovanou aplikací ASP.NET i ASP.NET Core je teď možné metody rozšíření použít k nastavení vzdáleného ověřování aplikací nebo vzdálené relace podle potřeby.

Zabezpečení připojení vzdálené aplikace

Vzhledem k tomu, že funkce vzdálené aplikace zahrnují obsluhu požadavků na nové koncové body z aplikace ASP.NET, je důležité, aby komunikace s ASP.NET aplikací a z ní byla zabezpečená.

Nejprve se ujistěte, že řetězec klíče rozhraní API použitý k ověření aplikace ASP.NET Core pomocí aplikace ASP.NET je jedinečný a uchovávaný tajný klíč. Osvědčeným postupem je neukládaný klíč rozhraní API ve správě zdrojového kódu. Místo toho ho načtěte za běhu ze zabezpečeného zdroje, jako je Azure Key Vault nebo jiná konfigurace zabezpečeného modulu runtime. Aby bylo možné podpořit zabezpečené klíče rozhraní API, připojení vzdálených aplikací vyžadují, aby klíče byly neprázdné identifikátory GUID (128bitová šestnáctkové čísla).

Zadruhé, protože je důležité, aby aplikace ASP.NET Core mohla důvěřovat tomu, že žádá o informace ze správné aplikace ASP.NET, měla by aplikace ASP.NET používat PROTOKOL HTTPS v jakýchkoli produkčních scénářích, aby aplikace ASP.NET Core věděla, že odpovědi obsluhuje důvěryhodný zdroj.