Configurer le serveur NuGet pour utiliser L'authentification
notes de mise à jour pour NuGet de 1,5 état
NuGet now supports connecting to private repositories that require basic
or NTLM authentication.
cependant, le lien qui y est contenu mène tout simplement à la l'hébergement de votre propre nuget flux page, sans aucune autre mention de la façon de configurer l'authentification.
je voudrais configurer un serveur NuGet qui est accessible via https à partir de l'internet, mais qui permet seulement aux personnes qui peuvent s'authentifier avec succès de visualiser ou télécharger les paquets sur le serveur.
Je l'ai fait créer une application sans auth comme décrit dans la La Création À Distance De Flux dans la section documentation, et il fonctionne très bien sur l'intranet. Que dois-je faire pour activer l'authentification sur ce repo?
une exigence supplémentaire serait que la solution ne devrait pas coûter des centaines de dollars (les deux premières réponses promeuvent des produits qui pourraient résoudre le problème mais coûter beaucoup).
3 réponses
ceci peut être fait en activant L'authentification Windows sur le Site web et en ajoutant des informations d'identification sur le serveur de compilation via le Sources option de ligne de commande, par défaut les informations d'identification sont stockées à l'aide d'une clé DPAPI restreinte à l'utilisateur courant sur la machine courante (ainsi, pour un serveur de compilation, vous devrez ajouter des informations d'identification lors de votre connexion sous le compte de service.)
pour les postes de travail de développeurs, vous n'avez qu'à ajouter le flux dans le Gestionnaire de paquets NuGet et ensuite entrer / stocker les informations d'identification lors de la mise à jour de l'alimentation (vous devriez être invité.)
Étape 1 - require Authentication on NuGet Server (IIS Configuration)
vous devez vous assurer que le module d'authentification que vous souhaitez utiliser est installé pour IIS, pour NTLM auth vous aurez besoin du module D'authentification Windows. Une fois installé, vous pouvez ouvrir IIS Manager et aller sur votre site web, ouvrir les paramètres D'authentification et activer L'authentification Windows, assurez-vous de désactivez tous les modules d'authentification que vous ne voulez pas prendre en charge (tels que Anonymous, Basic, etc.)
pour s'assurer que les justificatifs d'identité des utilisateurs sont utilisés, cliquez avec le bouton droit de la souris sur le Site et sélectionnez "Paramètres avancés", puis cliquez sur le bouton "justificatifs D'identité du chemin physique". Dans le dialogue s'assurer que "Application User (pass-through authentication)" est sélectionné.
des informations plus détaillées sur la configuration standard IIS pour L'authentification Windows peuvent être trouvées sur TechNet incluant la configuration à partir d'une ligne de commande et l'activation de la négociation (si c'était votre but.)
Étape 2-Ajouter des Sources à NuGet Config (construire le serveur, les éditeurs)
nuget.exe sources add -Name "Fabrikam Feed" -Source "https://nuget.fabrikam.com:443/nuget/"
nuget.exe sources add -Name "Fabirkam Publish" -Source "https://nuget.fabirkam.com:443/"
ici nous ajoutons deux entrées, l'une qui sera utilisée comme URL de flux normal et authentifié (pour récupérer les paquets du serveur. La seconde sera utilisée pour la publication sur le serveur (ajout ou mise à jour de fichiers nupkg.)
Étape 3-Mise À Jour Justificatifs d'identité pour les Sources ajoutées (serveur de compilation, éditeurs)
nuget.exe sources update -Name "Fabrikam Feed" -Source "https://nuget.fabrikam.com:443/nuget/" -UserName "Developer" -Password "g0d"
nuget.exe sources update -Name "Fabrikam Publish" -Source "https://nuget.fabrikam.com:443/" -UserName "Developer" -Password "g0d"
ici nous avons ajouté des identifiants à la configuration, si vous voyez %APPDATA%\NuGet\NuGet.config
vous devriez voir le flux que vous avez ajoutés ainsi que les informations d'identification chiffrées.
Si vous n'avez pas la possibilité de se connecter en tant que serveur, il est possible de stocker les informations d'identification en texte clair en utilisant le StorePasswordInClearText
option, mais ce n'est pas conseillé dans un environnement partagé.
Étape 4 - (optionnel) désactiver la Publier L'URL dans Visual Studio (développeurs)
ouvrez Visual Studio et naviguez vers la boîte de dialogue Paramètres du Gestionnaire de paquets NuGet, déroulez le flux "Fabrikam Publish". Cela n'affectera pas votre capacité de publier, cependant, si vous ne désactivez pas ce flux, vous recevrez des erreurs lorsque vous essayez de rafraîchir les paquets pour "toutes" les sources (car c'est une URL de publication, pas une URL de flux).)
Étape 5 - (optionnel) stocker les justificatifs D'identité de Windows dans Visual Studio (Les développeurs)
ouvrez Visual Studio et naviguez vers le Gestionnaire de paquets NuGet, cliquez sur "Fabrikam Feed". Vous devriez être invité à entrer des informations d'identification. Vous pouvez entrer des informations d'identification ici et cocher les options Enregistrer/se souvenir. Cela garantit que tenter de rafraîchir le flux dans Visual Studio ne demande pas constamment des justificatifs d'identité. Dans les dernières versions de NuGet Package Manager, le flux est récupéré en utilisant une requête HTTP standard et les informations d'identification que vous avez stockées pour nuget.config ne sont pas utiliser.
Notes:
vous n'avez pas besoin d'une solution tierce pour héberger des flux privés et sécurisés. NuGet server est disponible gratuitement et la sécurité NTLM/AD/Windows est prise en charge par IIS et NuGet tooling.
les Développeurs qui n'ont pas besoin de publier à l'alimentation n'avez pas besoin de stocker ces informations dans leur config. Ils n'ont pas non plus besoin d'un flux "publier" configuré. Cela est nécessaire pour construire des serveurs ou d'autres éditeurs (re: étapes 2 et 3.)
tous les développeurs qui utiliseront le paquet feed seront intéressés par L'Étape 5, cela devrait être tout ce qui est requis pour la plupart des développeurs. Ils peuvent simplement ajouter le flux à partir de Visual Studio, puis entrer leurs identifiants lorsqu'on leur demande.
si les justificatifs d'identité changent, vous pouvez naviguer pour démarrer - > Gérer les justificatifs D'identité de Windows et supprimer "VSCredentials_nuget.fabrikam.com".
Étape 2 peut être exécuté en studio visuel, mais pour plus de clarté j'ai donné la ligne de commande ici. Toutefois, l'étape 3 doit être exécutée en ligne de commande (ou à L'aide de L'API NuGet).)
dans une prochaine version de la rumeur NuGet si l'information relative aux justificatifs d'identité peut être stockée au niveau de la solution ou du projet (les détails ne sont pas clairs), cela n'est probablement intéressant que pour les gens dans un environnement de construction à plusieurs locataires où ils n'ont pas accès au serveur de construction.
j'Espère cela aide quelqu'un d'autre!
la solution que j'ai réellement choisie était D'utiliser TeamCity comme serveur NuGet; bien que ce soit un peu compliqué à mettre en place parce qu'il manque la fonctionnalité nuget push, il fonctionne maintenant bien et sans coût supplémentaire desservant les paquets NuGet pour les utilisateurs authentifiés seulement.
si vous voulez des flux vraiment sécurisés et les exposer à internet, vous pourriez jeter un oeil à MyGet.org où vous pouvez créer des flux privés nécessitant une authentification de base, par défaut sur SSL/HTTPS.
invitez les personnes que vous voulez sur votre fil et assignez leurs permissions, en quelques clics après l'inscription en utilisant votre fournisseur d'identité préféré (Live Id, Facebook, Google, Stackoverlow, GitHub, OAuth, etc), ou même vos propres ADFS d'entreprise (Entreprise plan.)
Plus d'info: https://www.myget.org/plans Pour obtenir de l'aide sur la configuration de l'authentification dans visual studio ou sur votre serveur de compilation, consultez notre documentation à https://docs.myget.org et notre blog. Si vous avez besoin d'aide, nous serons heureux de vous aider sur Twitter, par le biais de notre formulaire de contact ou par des questions StackOverflow étiquetées avec MyGet.