Configuración remota de la aplicación
En algunos escenarios de actualización incremental, es útil que la nueva aplicación ASP.NET Core pueda comunicarse con la aplicación ASP.NET original.
En concreto, esta capacidad se utiliza, actualmente, para la autenticación de aplicaciones remotas y las funciones de sesión remota.
Configuración
Para permitir que la aplicación ASP.NET Core se comunique con la aplicación ASP.NET, es necesario realizar un par de pequeños cambios en cada aplicación.
Configuración de la aplicación ASP.NET
Para configurar la aplicación ASP.NET para poder recibir solicitudes de la aplicación ASP.NET Core:
- Instale el paquete nuget
Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices
- Llamar al
AddRemoteAppServer
método de extensión en elISystemWebAdapterBuilder
:
SystemWebAdapterConfiguration.AddSystemWebAdapters(this)
.AddRemoteAppServer(options =>
{
// ApiKey is a string representing a GUID
options.ApiKey = ConfigurationManager.AppSettings["RemoteAppApiKey"];
});
En el método de configuración de opciones pasado a la AddRemoteAppServer
llamada, se debe especificar una clave de API. La clave de API es:
- Se usa para proteger el punto de conexión para que solo los autores de llamadas de confianza puedan realizar solicitudes a él.
- La misma clave de API proporcionada a la aplicación ASP.NET Core cuando está configurada.
- Una cadena y debe poder analizarse como GUID. Los guiones en la tecla son opcionales.
- Opcional: Agregue el
SystemWebAdapterModule
módulo alweb.config
si NuGet aún no lo ha agregado. ElSystemWebAdapterModule
módulo no se agrega automáticamente al usar proyectos de estilo 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>
Aplicación de ASP.NET Core
Para configurar la aplicación de ASP.NET Core para poder enviar solicitudes a la aplicación de ASP.NET, debe realizar un cambio similar, llamando AddRemoteApp
después de registrar los servicios del adaptador 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"];
});
En el código anterior:
- La
AddRemoteApp
llamada se usa para configurar la dirección URL de la aplicación remota y la clave de API secreta compartida. - La
RemoteAppUrl
propiedad especifica la dirección URL de la aplicación ASP.NET Framework con la que se comunica la aplicación ASP.NET Core. En este ejemplo, la dirección URL se lee desde una configuración existente utilizada por el proxy YARP que envía solicitudes de proxy a la aplicación de ASP.NET Framework como parte del patrón de fig del strangler de la migración incremental.
Con el ASP.NET y la aplicación ASP.NET Core actualizada, los métodos de extensión ahora se pueden usar para configurar la autenticación remota de aplicaciones o la sesión remota, según sea necesario.
Protección de la conexión a la aplicación remota
Dado que las características de la aplicación remota implican atender solicitudes en nuevos puntos de conexión desde la aplicación de ASP.NET, es importante que la comunicación hacia y desde la aplicación ASP.NET sea segura.
En primer lugar, asegúrese de que la cadena de clave de API que se usa para autenticar la aplicación ASP.NET Core con la aplicación ASP.NET es única y mantiene el secreto. Es un procedimiento recomendado no almacenar la clave de API en el control de código fuente. En su lugar, cárgelo en tiempo de ejecución desde un origen seguro, como Azure Key Vault u otra configuración de tiempo de ejecución seguro. Para fomentar claves de API seguras, las conexiones de aplicaciones remotas requieren que las claves sean GUID no vacías (números hexadecimales de 128 bits).
En segundo lugar, dado que es importante que la aplicación de ASP.NET Core pueda confiar en que solicita información de la aplicación de ASP.NET correcta, la aplicación de ASP.NET debe usar HTTPS en cualquier escenario de producción para que la aplicación de ASP.NET Core pueda saber que las respuestas se sirven mediante un origen de confianza.