Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Soutien a été ajouté dans la version 3.3 pour les fournisseurs d’informations d’identification spécifiques (v1) nuget.exe. Depuis lors, dans la version 4.8le support des fournisseurs d'informations d'identification (v2) qui fonctionnent dans tous les types de scénarios de ligne de commande (nuget.exe, dotnet.exe, msbuild.exe) a été ajouté.
Pour plus d’informations sur toutes les approches d’authentification, consultez Consommation de packages à partir de flux authentifiés .
nuget.exe découverte du fournisseur de données d'identification
nuget.exe fournisseurs d’informations d’identification peuvent être utilisés de 3 façons :
Globalement : pour rendre un fournisseur de justificatifs d'identité disponible pour toutes les instances exécutées
nuget.exesous le profil de l’utilisateur actuel, ajoutez-le à%LocalAppData%\NuGet\CredentialProviders. Vous devrez peut-être créer leCredentialProvidersdossier. Les fournisseurs d’informations d’identification peuvent être installés à la racine duCredentialProvidersdossier ou dans un sous-dossier. Si un fournisseur d’informations d’identification a plusieurs fichiers/assemblys, vous pouvez utiliser des sous-dossiers pour maintenir l’organisation des fournisseurs.À partir d’une variable d’environnement : les fournisseurs d’informations d’identification peuvent être stockés n’importe où et accessibles
nuget.exeen définissant la%NUGET_CREDENTIALPROVIDERS_PATH%variable d’environnement sur l’emplacement du fournisseur. Cette variable peut être une liste séparée par des points-virgules (par exemple,path1;path2) si vous avez plusieurs emplacements.Parallèlement à nuget.exe: Les fournisseurs d'informations d'identification pour nuget.exe peuvent être placés dans le même dossier que
nuget.exe.
Lors du chargement des fournisseurs d’informations d’identification, nuget.exe recherche les emplacements ci-dessus, dans l’ordre, pour tout fichier nommé credentialprovider*.exe, puis charge ces fichiers dans l’ordre dans lequel ils sont trouvés. Si plusieurs fournisseurs d’informations d’identification existent dans le même dossier, ils sont chargés par ordre alphabétique.
Création d’un fournisseur de credentials nuget.exe
Un fournisseur d’informations d’identification est un exécutable de ligne de commande, nommé dans le formulaire CredentialProvider*.exe, qui rassemble les entrées, acquiert les informations d’identification selon les besoins, puis retourne le code d’état de sortie approprié et la sortie standard.
Un fournisseur doit effectuer les opérations suivantes :
- Déterminez s’il peut fournir des informations d’identification pour l’URI ciblé avant de lancer l’acquisition d’informations d’identification. Si ce n’est pas le cas, il doit retourner le code d’état 1 sans informations d’identification.
- Ne pas modifier
NuGet.Config(par exemple, définir les informations d’identification là-bas). - Gérez la configuration du proxy HTTP elle-même, car NuGet ne fournit pas d’informations de proxy au plug-in.
- Retournez des informations d’identification ou des détails d’erreur à
nuget.exeen écrivant un objet de réponse JSON (voir ci-dessous) dans STDOUT, à l’aide de l’encodage UTF-8. - Si vous le souhaitez, émettez une journalisation de trace supplémentaire à stderr. Aucun secret ne doit jamais être écrit dans stderr, car à des niveaux de verbosité « normal » ou « détaillé », de telles traces sont échoées par NuGet à la console.
- Les paramètres inattendus doivent être ignorés, ce qui offre une compatibilité ascendante avec les futures versions de NuGet.
Paramètres d’entrée
| Paramètre/commutateur | Descriptif |
|---|---|
| Uri {value} | URI source du package nécessitant des informations d’identification. |
| Non interactif | S’il est présent, le fournisseur n’émet pas d’invites interactives. |
| IsRetry | Si elle est présente, indique que cette tentative est une nouvelle tentative d’une tentative ayant échoué précédemment. Les fournisseurs utilisent généralement cet indicateur pour s’assurer qu’ils contournent tout cache existant et demandent de nouvelles informations d’identification si possible. |
| Niveau de verbosité {value} | S’il est présent, l’une des valeurs suivantes : « normal », « silencieux » ou « détaillé ». Si aucune valeur n’est fournie, la valeur par défaut est « normale ». Les fournisseurs doivent l’utiliser comme indication du niveau de journalisation facultatif à émettre dans le flux d’erreur standard. |
Codes de sortie
| Code | Résultat | Descriptif |
|---|---|---|
| 0 | Success | Les informations d’identification ont été acquises avec succès et ont été écrites dans stdout. |
| 1 | FournisseurNonApplicable | Le fournisseur actuel ne fournit pas d’informations d’identification pour l’URI donné. |
| 2 | Failure | Le fournisseur est le fournisseur correct pour l’URI donné, mais ne peut pas fournir d’informations d’identification. Dans ce cas, nuget.exe n’effectue pas de nouvelle tentative d’authentification et échoue. Par exemple, lorsqu’un utilisateur annule une connexion interactive. |
Sortie standard
| Propriété | Remarques |
|---|---|
| Nom d’utilisateur | Nom d’utilisateur pour les demandes authentifiées. |
| Mot de passe | Mot de passe pour les demandes authentifiées. |
| Message | Détails facultatifs sur la réponse, utilisés uniquement pour afficher des détails supplémentaires dans les cas d’échec. |
Exemple stdout :
{ "Username" : "freddy@example.com",
"Password" : "bwm3bcx6txhprzmxhl2x63mdsul6grctazoomtdb6kfbof7m3a3z",
"Message" : "" }
Résolution des problèmes d’un fournisseur de justificatifs
À l'heure actuelle, NuGet n'offre pas un soutien direct pour le débogage de fournisseurs d'identifiants personnalisés. Le problème 4598 assure le suivi de ce travail.
Vous pouvez également effectuer les opérations suivantes :
Exécutez nuget.exe avec le
-verbositycommutateur pour inspecter la sortie détaillée.Ajoutez des messages de débogage à
stdoutaux endroits appropriés.Assurez-vous que vous utilisez nuget.exe 3.3 ou version ultérieure.
Attachez le débogueur au démarrage avec cet extrait de code :
while (!Debugger.IsAttached) { System.Threading.Thread.Sleep(100); } Debugger.Break();