Autenticazione dei feed con provider di credenziali nuget.exe
Nel supporto della versione 3.3
è stato aggiunto per nuget.exe
provider di credenziali specifici (v1). Da allora, è stato aggiunto il supporto della versione 4.8
per i provider di credenziali (v2) che funzionano in tutti gli scenari della riga di comando (nuget.exe
, dotnet.exe
, msbuild.exe
).
Per altri dettagli su tutti gli approcci di autenticazione, vedere Utilizzo di pacchetti da feed autenticati.
individuazione del provider di credenziali nuget.exe
nuget.exe provider di credenziali possono essere usati in 3 modi:
A livello globale: per rendere disponibile un provider di credenziali per tutte le istanze di
nuget.exe
esecuzione nel profilo dell'utente corrente, aggiungerlo a%LocalAppData%\NuGet\CredentialProviders
. Potrebbe essere necessario creare laCredentialProviders
cartella . I provider di credenziali possono essere installati nella radice dellaCredentialProviders
cartella o all'interno di una sottocartella. Se un provider di credenziali ha più file/assembly, è possibile usare sottocartelle per mantenere organizzati i provider.Da una variabile di ambiente: i provider di credenziali possono essere archiviati ovunque e resi accessibili
nuget.exe
impostando la%NUGET_CREDENTIALPROVIDERS_PATH%
variabile di ambiente sul percorso del provider. Questa variabile può essere un elenco delimitato da punto e virgola (ad esempio,path1;path2
) se sono presenti più posizioni.Insieme nuget.exe: nuget.exe provider di credenziali possono essere inseriti nella stessa cartella di
nuget.exe
.
Quando si caricano provider di credenziali, nuget.exe
cerca i percorsi precedenti, in ordine, per qualsiasi file denominato credentialprovider*.exe
, quindi carica tali file nell'ordine in cui vengono trovati. Se nella stessa cartella esistono più provider di credenziali, vengono caricati in ordine alfabetico.
Creazione di un provider di credenziali nuget.exe
Un provider di credenziali è un eseguibile della riga di comando, denominato nel formato CredentialProvider*.exe
, che raccoglie gli input, acquisisce le credenziali in base alle esigenze e quindi restituisce il codice di stato di uscita appropriato e l'output standard.
Un provider deve eseguire le operazioni seguenti:
- Determinare se può fornire le credenziali per l'URI di destinazione prima di avviare l'acquisizione delle credenziali. In caso contrario, deve restituire il codice di stato 1 senza credenziali.
- Non modificare
NuGet.Config
(ad esempio l'impostazione delle credenziali). - Gestire autonomamente la configurazione del proxy HTTP, perché NuGet non fornisce informazioni sul proxy al plug-in.
- Restituire le credenziali o i dettagli dell'errore a
nuget.exe
scrivendo un oggetto risposta JSON (vedere di seguito) in stdout, usando la codifica UTF-8. - Facoltativamente, generare ulteriori registrazioni di traccia in stderr. Nessun segreto deve essere mai scritto in stderr, poiché a livelli di dettaglio "normale" o "dettagliato" tali tracce vengono restituite da NuGet alla console.
- I parametri imprevisti devono essere ignorati, garantendo la compatibilità con le versioni future di NuGet.
Parametri di input
Parametro/commutatore | Descrizione |
---|---|
URI {value} | URI dell'origine del pacchetto che richiede credenziali. |
NonInteractive | Se presente, il provider non invia richieste interattive. |
IsRetry | Se presente, indica che questo tentativo è un nuovo tentativo di un tentativo non riuscito in precedenza. I provider usano in genere questo flag per assicurarsi di ignorare qualsiasi cache esistente e richiedere nuove credenziali, se possibile. |
Dettaglio {value} | Se presente, uno dei valori seguenti: "normal", "quiet" o "detailed". Se non viene specificato alcun valore, il valore predefinito è "normal". I provider devono usarlo come indicazione del livello di registrazione facoltativa da generare nel flusso di errore standard. |
Codici di uscita
Code | Risultato | Descrizione |
---|---|---|
0 | Success | Le credenziali sono state acquisite correttamente e sono state scritte in stdout. |
1 | ProviderNotApplicable | Il provider corrente non fornisce le credenziali per l'URI specificato. |
2 | Errore | Il provider è il provider corretto per l'URI specificato, ma non può fornire le credenziali. In questo caso, nuget.exe non ritentare l'autenticazione e avrà esito negativo. Un esempio tipico è quando un utente annulla un account di accesso interattivo. |
Output standard
Proprietà | Note |
---|---|
Username | Nome utente per le richieste autenticate. |
Password | Password per le richieste autenticate. |
Message | Dettagli facoltativi sulla risposta, usati solo per visualizzare dettagli aggiuntivi nei casi di errore. |
Esempio di stdout:
{ "Username" : "freddy@example.com",
"Password" : "bwm3bcx6txhprzmxhl2x63mdsul6grctazoomtdb6kfbof7m3a3z",
"Message" : "" }
Risoluzione dei problemi relativi a un provider di credenziali
Al momento, NuGet non offre un supporto diretto per il debug di provider di credenziali personalizzati; problema 4598 sta monitorando questo lavoro.
È anche possibile effettuare le seguenti operazioni:
Eseguire nuget.exe con l'opzione per esaminare l'output
-verbosity
dettagliato.Aggiungere messaggi di debug a
stdout
in posizioni appropriate.Assicurarsi di usare nuget.exe 3.3 o versione successiva.
Collegare il debugger all'avvio con questo frammento di codice:
while (!Debugger.IsAttached) { System.Threading.Thread.Sleep(100); } Debugger.Break();