Condividi tramite


Configurazione remota dell'app

In alcuni scenari di aggiornamento incrementale, è utile che la nuova app ASP.NET Core sia in grado di comunicare con l'app ASP.NET originale.

In particolare, questa funzionalità viene usata, attualmente, per l'autenticazione remota delle app e le funzionalità di sessione remota.

Impostazione

Per consentire all'app ASP.NET Core di comunicare con l'app ASP.NET, è necessario apportare alcune piccole modifiche a ogni app.

configurazione dell'app ASP.NET

Per configurare l'app ASP.NET per poter ricevere richieste dall'app ASP.NET Core:

  1. Installare il pacchetto nuget Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices
  2. Chiamare il AddRemoteAppServer metodo di estensione in ISystemWebAdapterBuilder:
SystemWebAdapterConfiguration.AddSystemWebAdapters(this)
    .AddRemoteAppServer(options =>
    {
        // ApiKey is a string representing a GUID
        options.ApiKey = ConfigurationManager.AppSettings["RemoteAppApiKey"];
    });

Nel metodo di configurazione delle opzioni passato alla AddRemoteAppServer chiamata è necessario specificare una chiave API. La chiave API è:

  • Usato per proteggere l'endpoint in modo che solo i chiamanti attendibili possano effettuarvi richieste.
  • La stessa chiave API fornita all'app ASP.NET Core quando è configurata.
  • Una stringa e deve essere analizzabile come GUID. I trattini nella chiave sono facoltativi.
  1. Facoltativo: aggiungere il SystemWebAdapterModule modulo a web.config se non è già stato aggiunto da NuGet. Il SystemWebAdapterModule modulo non viene aggiunto automaticamente quando si usano progetti di stile SDK per 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>

App ASP.NET Core

Per configurare l'app ASP.NET Core per poter inviare richieste all'app ASP.NET, è necessario apportare una modifica simile, chiamando AddRemoteApp dopo aver registrato i servizi dell'adapter System.Web con AddSystemWebAdapters.

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

Nel codice precedente:

  • La AddRemoteApp chiamata viene usata per configurare l'URL dell'app remota e la chiave API privata condivisa.
  • La RemoteAppUrl proprietà specifica l'URL dell'app ASP.NET Framework con cui comunica l'app ASP.NET Core. In questo esempio, l'URL viene letto da un'impostazione di configurazione esistente usata dal proxy YARP che esegue il proxy delle richieste all'app ASP.NET Framework come parte del modello fig strangler della migrazione incrementale.

Con l'aggiornamento dell'app ASP.NET e ASP.NET Core, i metodi di estensione possono ora essere usati per configurare l'autenticazione remota dell'app o la sessione remota, in base alle esigenze.

Protezione della connessione all'app remota

Poiché le funzionalità delle app remote comportano la gestione delle richieste su nuovi endpoint dall'app ASP.NET, è importante che la comunicazione tra e verso l'app ASP.NET sia sicura.

Assicurarsi prima di tutto che la stringa di chiave API usata per autenticare l'app ASP.NET Core con l'app ASP.NET sia univoca e mantenuta segreta. È consigliabile non archiviare la chiave API nel controllo del codice sorgente. Caricarlo in fase di esecuzione da un'origine sicura, ad esempio Azure Key Vault o da un'altra configurazione di runtime sicura. Per incoraggiare le chiavi API sicure, le connessioni alle app remote richiedono che le chiavi siano GUID non vuoti (numeri esadecimale a 128 bit).

In secondo luogo, poiché è importante che l'app ASP.NET Core sia in grado di considerare attendibile che richieda informazioni dall'app ASP.NET corretta, l'app ASP.NET deve usare HTTPS in qualsiasi scenario di produzione in modo che l'app ASP.NET Core possa conoscere le risposte vengono gestite da un'origine attendibile.