Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Annotazioni
In questo modo si usano gli adapter System.Web per semplificare la migrazione.
Nell'app ASP.NET Framework configurare <machineKey> e l'host degli adattatori System.Web in modo che entrambe le app possano condividere una configurazione compatibile per la protezione dei dati. Per informazioni generali sulla sostituzione di <machineKey>, vedere Sostituire la chiave macchina di ASP.NET in ASP.NET Core.
Queste linee guida si basano sul System.Web modello di hosting degli adattatori in modo che i servizi di protezione dei dati vengano registrati nel contenitore DI dell'host e resi disponibili in tutta l'app ASP.NET Framework. Integrando con l'host DI fornito dagli adattatori, i componenti esistenti di ASP.NET Framework possono risolvere IDataProtectionProvider, IDataProtector e tipi correlati.
Sia l'app ASP.NET Framework che l'app ASP.NET Core devono usare un nome dell'applicazione condivisa e un repository di chiavi per la protezione dei dati in modo che i payload protetti possano eseguire il round trip tra le app.
- Chiamare
SetApplicationNamecon lo stesso nome di applicazione logica in entrambe le app (ad esempio,"my-app"). - Configurare
PersistKeysToFileSystemper puntare alla stessa posizione del repository delle chiavi che entrambe le app possono leggere e scrivere.
Annotazioni
La directory usata con PersistKeysToFileSystem è l'archivio di backup per le chiavi di protezione dei dati condivise. Nell'ambiente di produzione, usare un archivio condiviso durevole(ad esempio una condivisione UNC, Redis o Archiviazione BLOB di Azure) e seguire le indicazioni sulla gestione delle chiavi in Configurare ASP.NET Protezione dei dati di base e ASP.NET Panoramica della protezione dei dati di base.
Configurare l'app ASP.NET Framework
Per implementare questa configurazione nell'app ASP.NET Framework, assicurarsi che il Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices pacchetto sia installato nell'app ASP.NET Framework.
Quando si installa il Microsoft.AspNetCore.SystemWebAdapters.FrameworkServices pacchetto nell'app ASP.NET Framework, viene in genere configurato <machineKey> automaticamente. Se <machineKey> non è presente o è necessario verificare le impostazioni, configurare '' in Web.config per utilizzare il data protector compatibile come illustrato di seguito:
<configuration>
<system.web>
<httpRuntime targetFramework="4.8.1" />
<machineKey
compatibilityMode="Framework45"
dataProtectorType="Microsoft.AspNetCore.DataProtection.SystemWeb.CompatibilityDataProtector,
Microsoft.AspNetCore.DataProtection.SystemWeb" />
</system.web>
</configuration>
Global.asax.cs Quindi, registrare l'host System.Web adapters e configurare la protezione dei dati utilizzando lo stesso nome dell'applicazione e lo stesso repository di chiavi che verranno usati dall'app ASP.NET Core. L'esempio seguente è stato adattato dall'esempio MachineKey Framework:
using System.IO;
using System.Web;
using Microsoft.AspNetCore.DataProtection;
using Microsoft.AspNetCore.SystemWebAdapters.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace DataProtectionDemo
{
public class MvcApplication : HttpApplication
{
protected void Application_Start()
{
HttpApplicationHost.RegisterHost(builder =>
{
builder.AddServiceDefaults();
builder.AddDataProtection()
.SetApplicationName("my-app")
.PersistKeysToFileSystem(new DirectoryInfo(@"\\server\share\myapp-keys\"));
});
}
}
}
Questa configurazione:
- Imposta un nome dell'applicazione condivisa (
my-app) che deve essere usata anche dall'app ASP.NET Core. - Configura un repository di chiavi condivise ,ad esempio una condivisione UNC, a cui entrambe le app possono accedere.
- Garantisce che le operazioni
<machineKey>(autenticazione dei moduli, stato di visualizzazione,MachineKey.Protecte API correlate) siano instradate tramite la protezione dei dati di ASP.NET Core. - Viene eseguito come parte dell'host del framework ASP.NET in modo che le funzionalità basate su
<machineKey>esistenti utilizzino lo stesso sistema di protezione dei dati di ASP.NET Core.
Configurare l'app ASP.NET Core
Non è necessaria alcuna configurazione aggiuntiva per la protezione dei dati nell'app ASP.NET Core. È sufficiente configurare lo stesso nome dell'applicazione e lo stesso percorso di archiviazione delle chiavi usato dall'app ASP.NET Framework.
using Microsoft.AspNetCore.DataProtection;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddDataProtection()
.SetApplicationName(MachineKeyExampleHandler.AppName)
.PersistKeysToFileSystem(
new DirectoryInfo(Path.Combine(Path.GetTempPath(), "sharedkeys", MachineKeyExampleHandler.AppName)));
var app = builder.Build();
// Configure application
app.Run();