web-dev-qa-db-fra.com

Configuration du serveur NuGet pour utiliser l'authentification

notes de version pour l'état NuGet 1.5

NuGet now supports connecting to private repositories that require basic 
or NTLM authentication.

Cependant, le lien qu'il contient mène simplement à la page hébergeant vos propres flux de pépites , sans aucune autre mention sur la façon de configurer l'authentification.

Je souhaite configurer un serveur NuGet accessible via https depuis Internet, mais ne permet qu'aux personnes qui peuvent s'authentifier avec succès de visualiser ou de télécharger les packages sur le serveur.

J'ai créé une application sans authentification comme décrit dans la section Création de flux distants dans la documentation , et cela fonctionne bien sur le intranet. Que dois-je faire pour activer l'authentification sur ce référentiel?

Une exigence supplémentaire serait que la solution ne devrait pas coûter des centaines de dollars (les deux premières réponses font la promotion de produits qui pourraient résoudre le problème mais coûter cher).

21
Wilbert

Cela peut être fait en activant l'authentification Windows sur le site Web et en ajoutant des informations d'identification sur le serveur de build via l'option de ligne de commande Sources , par défaut, les informations d'identification sont stockées à l'aide d'une clé DPAPI limitée à l'utilisateur actuel sur la machine actuelle (ainsi, pour un serveur de build, vous devez ajouter des informations d'identification lorsque vous êtes connecté sous le compte de service.)

Pour les postes de travail Developer, vous devez uniquement ajouter le flux dans NuGet Package Manager, puis saisir/stocker les informations d'identification lors de l'actualisation du flux (vous devriez être invité.)

Étape 1 - Exiger une authentification sur le serveur NuGet (configuration IIS)

Vous devez vous assurer que le module d'authentification que vous souhaitez utiliser est installé pour IIS, pour l'authentification NTLM, vous aurez besoin du module d'authentification Windows. Une fois installé, vous pouvez ouvrir IIS Manager et accéder à votre site Web, ouvrir les paramètres d'authentification et activer l'authentification Windows, assurez-vous de désactiver tous les modules d'authentification que vous ne souhaitez pas prendre en charge (tels que Anonymous, Basique, etc.)

Pour vous assurer que les informations d'identification de l'utilisateur sont utilisées, cliquez avec le bouton droit sur le site et sélectionnez "Paramètres avancés", puis cliquez sur le bouton "Informations d'identification du chemin physique". Dans la boîte de dialogue, assurez-vous que "Utilisateur d'application (authentification unique)" est sélectionné.

Des informations plus détaillées sur la norme IIS pour l'authentification Windows peut être trouvée sur TechNet y compris la configuration à partir d'une ligne de commande et l'activation de la négociation (si tel était votre objectif.)

Étape 2 - Ajouter des sources à NuGet Config (Build Server, Publishers)

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, une qui sera utilisée comme URL de flux normale et authentifiée (pour récupérer les packages à partir du serveur.) La seconde sera utilisée pour la publication sur le serveur (ajout ou mise à jour de fichiers nupkg.)

Étape 3 - Mettre à jour les informations d'identification pour les sources ajoutées (Build Server, é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 informations d'identification à la configuration, si vous affichez %APPDATA%\NuGet\NuGet.config vous devriez voir les flux que vous avez ajoutés ainsi que les informations d'identification chiffrées.

Si vous n'avez pas la possibilité de vous connecter en tant que serveur, il est possible de stocker les informations d'identification en texte clair en utilisant l'option StorePasswordInClearText, mais cela n'est pas conseillé dans un environnement partagé.

Étape 4 - (Facultatif) Désactivez l'URL de publication dans Visual Studio (développeurs)

Ouvrez Visual Studio et accédez à la boîte de dialogue Paramètres du gestionnaire de packages NuGet, décochez le flux "Fabrikam Publish". Cela n'affectera pas votre capacité à publier, cependant, si vous ne désactivez pas ce flux, vous recevrez des erreurs lorsque vous essayez de rafraîchir les packages pour les sources "Toutes" (car il s'agit d'une URL de publication, pas d'une URL de flux.)

Étape 5 - (Facultatif) Stockez les informations d'identification Windows dans Visual Studio (développeurs)

Ouvrez Visual Studio et accédez au gestionnaire de packages NuGet, cliquez sur "Fabrikam Feed". Vous devez être invité à fournir vos informations d'identification. Vous pouvez saisir vos informations d'identification ici et cocher les options de sauvegarde/mémorisation. Cela garantit que la tentative d'actualisation du flux dans Visual Studio ne demande pas constamment d'informations d'identification. Dans les dernières versions de NuGet Package Manager, le flux est récupéré à l'aide d'une demande HTTP standard et les informations d'identification que vous avez stockées dans nuget.config ne sont PAS utilisées.

Remarques:

  1. Vous n'avez pas besoin d'une solution tierce pour héberger des flux privés et sécurisés. Le serveur NuGet est disponible gratuitement et la sécurité NTLM/AD/Windows est prise en charge par les outils IIS et NuGet.

  2. Les développeurs qui n'ont pas besoin de publier dans le flux n'ont pas besoin de stocker les informations d'identification dans leur configuration. Ils n'ont pas non plus besoin d'un flux "Publier" configuré. Cela n'est nécessaire que pour les serveurs de build ou d'autres éditeurs (re: étapes 2 et 3.)

  3. Tous les développeurs qui utiliseront le flux de packages 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 informations d'identification à l'invite.

  4. Si les informations d'identification changent, vous pouvez accéder à Démarrer -> Gérer les informations d'identification Windows et supprimer "VSCredentials_nuget.fabrikam.com".

  5. L'étape 2 peut être effectuée dans Visual Studio, mais pour plus de clarté, j'ai donné la ligne de commande ici. L'étape 3, cependant, doit être effectuée via la ligne de commande (ou à l'aide des API NuGet.)

  6. Dans une future version de NuGet, la rumeur veut que les informations d'identification puissent être stockées au niveau de la solution ou du projet (les détails ne sont pas clairs). .

J'espère que cela aide quelqu'un d'autre!

43
Shaun Wilson

La solution que j'ai choisie était d'utiliser TeamCity comme serveur NuGet; bien que ce soit un peu compliqué à configurer car il manque la fonctionnalité Push de nuget, cela fonctionne maintenant bien et sans frais supplémentaires en servant les packages NuGet aux utilisateurs authentifiés uniquement.

2
Wilbert

Si vous voulez des flux vraiment sécurisés et les exposer à Internet, vous pouvez consulter 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 souhaitez sur votre flux et attribuez leurs autorisations, en quelques clics après vous être inscrit en utilisant votre fournisseur d'identité préféré (Live Id, Facebook, Google, Stackoverflow, GitHub, OAuth, etc.), ou même votre propre ADFS d'entreprise (entreprise plan).

Plus d'informations: https://www.myget.org/plans Pour obtenir de l'aide sur la configuration de l'authentification dans Visual Studio ou sur votre serveur de build, consultez notre documentation sur https: // docs. myget.org et notre blog . Si vous avez besoin d'aide, nous serons heureux de vous aider sur Twitter , via notre formulaire de contact ou via les questions StackOverflow marquées avec MyGet.

0
Xavier Decoster