Plug-in di autenticazione multipiattaforma NuGet

Nella versione 4.8+, tutti i client NuGet (NuGet.exe, Visual Studio, dotnet.exe e MSBuild.exe) possono usare un plug-in di autenticazione basato sul modello multipiattaforma NuGet.

Autenticazione in dotnet.exe

Visual Studio e NuGet.exe sono interattivi per impostazione predefinita. NuGet.exe contiene un'opzione per renderla non interattiva. Inoltre, i plug-in NuGet.exe e Visual Studio richiedono all'utente l'input. In dotnet.exe non è presente alcuna richiesta e il valore predefinito non è interattivo.

Il meccanismo di autenticazione in dotnet.exe è il flusso del dispositivo. Quando l'operazione di ripristino o aggiunta pacchetto viene eseguita in modo interattivo, l'operazione blocca e istruzioni per l'utente come completare le autenticazioni verrà fornita nella riga di comando. Quando l'utente completa l'autenticazione, l'operazione continuerà.

Per rendere interattiva l'operazione, è necessario passare --interactive. Attualmente solo i comandi e dotnet add package espliciti dotnet restore supportano un commutatore interattivo. Non è disponibile alcun interruttore interattivo su dotnet build e dotnet publish.

Autenticazione in MSBuild

Analogamente a dotnet.exe, MSBuild.exe è per impostazione predefinita non interattiva, il meccanismo di autenticazione MSBuild.exe è il flusso del dispositivo. Per consentire al ripristino di sospendere e attendere l'autenticazione, chiamare il ripristino con msbuild -t:restore -p:NuGetInteractive="true".

Creazione di un plug-in di autenticazione multipiattaforma

Un'implementazione di esempio è disponibile nel plug-in Microsoft Credential Provider.

È molto importante che i plug-in siano conformi ai requisiti di sicurezza stabiliti dagli strumenti client NuGet. La versione minima necessaria per un plug-in di autenticazione è 2.0.0. NuGet eseguirà l'handshake con il plug-in e la query per le attestazioni dell'operazione supportate. Per altre informazioni sui messaggi specifici, vedere i messaggi del protocollo plug-in multipiattaforma NuGet.

NuGet imposta il livello di log e fornisce informazioni proxy al plug-in, se applicabile. La registrazione nella console NuGet è accettabile solo dopo che NuGet ha impostato il livello di log sul plug-in.

  • Comportamento di autenticazione del plug-in .NET Framework

In .NET Framework i plug-in possono richiedere input a un utente, sotto forma di finestra di dialogo.

  • Comportamento di autenticazione del plug-in .NET Core

In .NET Core non è possibile visualizzare una finestra di dialogo. I plug-in devono usare il flusso del dispositivo per l'autenticazione. Il plug-in può inviare messaggi di log a NuGet con istruzioni all'utente. Si noti che la registrazione è disponibile dopo che il livello di log è stato impostato sul plug-in. NuGet non accetta alcun input interattivo dalla riga di comando.

Quando il client chiama il plug-in con un ottieni credenziali di autenticazione, i plug-in devono essere conformi all'opzione di interattività e rispettare l'opzione del dialogo.

La tabella seguente riepiloga il comportamento del plug-in per tutte le combinazioni.

IsNonInteractive CanShowDialog Comportamento del plug-in
true true L'opzione IsNonInteractive ha la precedenza sull'opzione di dialogo. Il plug-in non è autorizzato a visualizzare una finestra di dialogo. Questa combinazione è valida solo per i plug-in .NET Framework
true false L'opzione IsNonInteractive ha la precedenza sull'opzione di dialogo. Il plug-in non è consentito bloccare. Questa combinazione è valida solo per i plug-in .NET Core
false true Il plug-in dovrebbe visualizzare una finestra di dialogo. Questa combinazione è valida solo per i plug-in .NET Framework
false false Il plug-in non può visualizzare una finestra di dialogo. Il plug-in deve usare il flusso del dispositivo per l'autenticazione registrando un messaggio di istruzione tramite il logger. Questa combinazione è valida solo per i plug-in .NET Core

Prima di scrivere un plug-in, vedere le specifiche seguenti.