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.