Configuration de l’application à distance

Dans certains scénarios de mise à niveau incrémentielle, il est utile que la nouvelle application ASP.NET Core puisse communiquer avec l’application ASP.NET d’origine.

Plus précisément, cette fonctionnalité est actuellement utilisée pour l’authentification des applications distantes et les fonctionnalités de session à distance.

Configuration

Pour permettre à l’application ASP.NET Core de communiquer avec l’application ASP.NET, il est nécessaire d’apporter quelques petites modifications à chaque application.

Configuration de l’application ASP.NET

Pour configurer l’application ASP.NET afin de pouvoir recevoir des demandes de l’application ASP.NET Core :

  1. Installez le package nuget Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices
  2. Appelez la AddRemoteAppServer méthode d’extension sur :ISystemWebAdapterBuilder
SystemWebAdapterConfiguration.AddSystemWebAdapters(this)
    .AddRemoteAppServer(options =>
    {
        // ApiKey is a string representing a GUID
        options.ApiKey = ConfigurationManager.AppSettings["RemoteAppApiKey"];
    });

Dans la méthode de configuration des options passée à l’appel AddRemoteAppServer, une clé API doit être spécifiée. La clé API est la suivante :

  • Utilisé pour sécuriser le point de terminaison afin que seuls les appelants approuvés puissent lui faire des requêtes.
  • La même clé API fournie à l’application ASP.NET Core lors de sa configuration.
  • Chaîne et doit être analysé en tant que GUID. Les traits d’union dans la clé sont facultatifs.
  1. Optionnel : ajoutez le module SystemWebAdapterModule à web.config s’il n’a pas déjà été ajouté par NuGet. Le module SystemWebAdapterModule n’est pas ajouté automatiquement lors de l’utilisation de projets de style SDK pour 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>

Application ASP.NET Core

Pour configurer l’application ASP.NET Core afin de pouvoir envoyer des requêtes à l’application ASP.NET, vous devez apporter une modification similaire, en appelant AddRemoteApp après avoir inscrit les services d’adaptateur System.Web auprès AddSystemWebAdaptersde .

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

Dans le code précédent :

  • L’appel AddRemoteApp est utilisé pour configurer l’URL de l’application distante et la clé API secrète partagée.
  • La propriété RemoteAppUrl spécifie l’URL de l’application ASP.NET Framework avec laquelle l’application ASP.NET Core communique. Dans cet exemple, l’URL est lue à partir d’un paramètre de configuration existant utilisé par le proxy YARP qui proxy les demandes à l’application ASP.NET Framework dans le cadre du modèle de fig strangler de la migration incrémentielle.

Une fois l’application ASP.NET et ASP.NET Core mises à jour, les méthodes d’extension peuvent désormais être utilisées pour configurer l’authentification d’application distante ou la session à distance, selon les besoins.

Sécurisation de la connexion d’application distante

Étant donné que les fonctionnalités d’application distante impliquent le traitement des requêtes sur de nouveaux points de terminaison à partir de l’application ASP.NET, il est important que la communication vers et depuis l’application ASP.NET soit sécurisée.

Tout d’abord, assurez-vous que la chaîne de clé API utilisée pour authentifier l’application ASP.NET Core auprès de l’application ASP.NET est unique et gardée secrète. Il est recommandé de ne pas stocker la clé API dans le contrôle de code source. Au lieu de cela, chargez-le au moment de l’exécution à partir d’une source sécurisée telle qu’Azure Key Vault ou d’une autre configuration d’exécution sécurisée. Pour encourager la sécurisation des clés API, les connexions d’application distantes nécessitent que les clés soient des GUID non vides (nombres hexadécimaux 128 bits).

Deuxièmement, étant donné qu’il est important que l’application ASP.NET Core puisse être fiable pour demander des informations à l’application ASP.NET appropriée, l’application ASP.NET doit utiliser HTTPS dans tous les scénarios de production afin que l’application ASP.NET Core puisse savoir que les réponses sont traitées par une source approuvée.