Compartilhar via


Configuração remota do aplicativo

Em alguns cenários de atualização incremental, é útil que o novo aplicativo ASP.NET Core possa se comunicar com o aplicativo ASP.NET original.

Especificamente, essa funcionalidade é usada, atualmente, para autenticação de aplicativo remoto e recursos de sessão remota .

Configuração

Para permitir que o aplicativo ASP.NET Core se comunique com o aplicativo ASP.NET, é necessário fazer algumas pequenas alterações em cada aplicativo.

configuração do aplicativo ASP.NET

Para configurar o aplicativo ASP.NET para receber solicitações do aplicativo ASP.NET Core:

  1. Instale o pacoteMicrosoft.AspNetCore.SystemWebAdapters.FrameworkServices do NuGet
  2. Chame o método AddRemoteAppServer de extensão no ISystemWebAdapterBuilder:
SystemWebAdapterConfiguration.AddSystemWebAdapters(this)
    .AddRemoteAppServer(options =>
    {
        // ApiKey is a string representing a GUID
        options.ApiKey = ConfigurationManager.AppSettings["RemoteAppApiKey"];
    });

No método de configuração de opções passado para a chamada AddRemoteAppServer, uma chave de API deve ser especificada. A chave de API é:

  • Usada para proteger o ponto de extremidade para que somente chamadores confiáveis possam fazer solicitações a ele.
  • A mesma chave de API fornecida ao aplicativo ASP.NET Core quando ele está configurado.
  • Uma cadeia de caracteres e deve ser analisável como um GUID. Hífens na chave são opcionais.
  1. Opcional: adicionar o módulo SystemWebAdapterModule ao web.config se ele ainda não tiver sido adicionado pelo NuGet. O módulo SystemWebAdapterModule não é adicionado automaticamente ao usar projetos de estilo do SDK para 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>

Aplicativo do ASP.NET Core

Para configurar o aplicativo ASP.NET Core a ser capaz de enviar solicitações para o aplicativo ASP.NET, você precisa fazer uma alteração semelhante, chamando AddRemoteApp depois de registrar serviços de adaptador System.Web com AddSystemWebAdapters.

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

No código anterior:

  • A chamada AddRemoteApp é usada para configurar a URL do aplicativo remoto e a chave de API de segredo compartilhado.
  • A propriedade RemoteAppUrl especifica a URL do aplicativo ASP.NET Framework com o qual o aplicativo ASP.NET Core se comunica. Nesse exemplo, a URL é lida a partir de uma configuração existente usada pelo proxy YARP que solicita para o aplicativo ASP.NET Framework como parte do padrão de fig do estrangulador da migração incremental.

Com o aplicativo ASP.NET e ASP.NET Core atualizado, os métodos de extensão agora podem ser usados para configurar a autenticação remota de aplicativo ou a sessão remota, conforme necessário.

Como proteger a conexão de aplicativo remoto

Como os recursos de aplicativo remoto envolvem o atendimento de solicitações em novos pontos de extremidade do aplicativo ASP.NET, é importante que a comunicação de e para o aplicativo ASP.NET seja segura.

Primeiro, verifique se a cadeia de caracteres de chave de API usada para autenticar o aplicativo ASP.NET Core com o aplicativo ASP.NET é exclusiva e mantida em segredo. É uma prática recomendada não armazenar a chave de API no controle do código-fonte. Em vez disso, carregue-o em runtime de uma fonte segura, como o Azure Key Vault ou outra configuração de runtime seguro. Para incentivar chaves de API seguras, as conexões de aplicativo remoto exigem que as chaves sejam GUIDs não vazias (números hexadecimais de 128 bits).

Em segundo lugar, como é importante que o aplicativo ASP.NET Core possa confiar que está solicitando informações do aplicativo ASP.NET correto, o aplicativo ASP.NET deve usar HTTPS em qualquer cenário de produção para que o aplicativo ASP.NET Core possa saber que as respostas estão sendo atendidas por uma fonte confiável.