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.
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 vengono fornite richieste e l'impostazione predefinita è non interattiva.
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 si blocca e saranno fornite istruzioni all'utente su come completare le autenticazioni 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 espliciti dotnet restore e dotnet add package 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 plugin ed eseguirà la query per le affermazioni delle operazioni supportate. Per ulteriori dettagli sui messaggi specifici, fare riferimento ai messaggi del protocollo del plug-in NuGet multipiattaforma.
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.
| ÈNonInterattivo | CanShowDialog | Comportamento del plug-in |
|---|---|---|
| true | true | L'opzione IsNonInteractive ha la precedenza sull'opzione di dialogo. Non è consentito che il plug-in blocchi. |
| true | false | L'opzione IsNonInteractive ha la precedenza sull'opzione di dialogo. Non è consentito che il plug-in blocchi. |
| false | true | Se necessario, il plug-in può visualizzare una finestra di dialogo. Ad esempio, accesso interattivo o selezione dell'account. |
| false | false | Il plug-in non dovrebbe/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. |
Prima di NuGet 7.0, NuGet impostava sempre CanShowDialog su false nella CLI dotnet e su true per il ripristino di MSBuild.
A partire dalla versione 7.0, NuGet imposterà sempre l'opzione CanShowDialog su true, ma i plug-in dovrebbero comunque rilevare quando le interfacce grafiche non sono disponibili.
Ad esempio, quando si esegue in Linux tramite una connessione SSH senza inoltro X o una sessione remota di PowerShell.
Prima di scrivere un plug-in, vedere le specifiche seguenti.