Подтвердить что ты не робот

Настройка сервера NuGet для использования аутентификации

примечания к выпуску для состояния NuGet 1.5

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

Однако содержащаяся здесь ссылка просто приводит к размещению ваших собственных страниц nuget feeds, без дальнейшего упоминания о том, как настроить аутентификацию.

Я хотел бы настроить сервер NuGet, доступный через https из Интернета, но только для тех, кто может успешно пройти аутентификацию для просмотра или загрузки пакетов на сервере.

Я создал приложение без auth, как описано в разделе Создание удаленных каналов в документации, и он отлично работает в интрасети, Что мне нужно сделать, чтобы включить аутентификацию в этом репо?

Дополнительным требованием было бы то, что решение не должно стоить сотен долларов (первые два ответа способствуют продуктам, которые могут решить проблему, но стоят много).

4b9b3361

Ответ 1

Это можно сделать, включив проверку подлинности Windows на веб-сайте и добавив учетные данные на сервере сборки с помощью параметра командной строки Sources, по умолчанию учетные данные сохраняются с использованием ключа DPAPI, ограниченного текущим пользователем на текущем компьютере (таким образом, для сервера сборки вам необходимо будет добавить учетные данные во время входа в учетную запись службы.)

Для рабочих станций разработчиков вам нужно только добавить фид в диспетчере пакетов NuGet, а затем ввести/сохранить учетные данные при обновлении фида (вам должно быть предложено.)

Шаг 1 - Требовать аутентификацию на сервере NuGet (настройка IIS)

Вам нужно убедиться, что модуль аутентификации, который вы хотите использовать, установлен для IIS, для авторизации NTLM вам понадобится модуль проверки подлинности Windows. После установки вы можете открыть диспетчер IIS и перейти на свой веб-сайт, открыть параметры проверки подлинности и Включить проверку подлинности Windows, обязательно отключите любые модули аутентификации, которые вы не хотите поддерживать (например, анонимный, базовый и т.д.).

Чтобы убедиться, что учетные данные пользователя используются, щелкните правой кнопкой мыши на Сайте и выберите "Дополнительные настройки", затем нажмите кнопку "Учетные данные физического пути". В диалоговом окне убедитесь, что выбран "Пользовательский интерфейс (сквозная аутентификация)".

Более подробную информацию о стандартной конфигурации IIS для проверки подлинности Windows можно найти в TechNet, включая настройку из командной строки и включение Negotiate (если это была ваша цель).

Шаг 2 - добавьте источники в конфигурацию NuGet (сервер сборки, издатели)

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/"

Здесь мы добавляем две записи, которые будут использоваться в качестве обычного, прошедшего проверку URL-адреса фида (для получения пакетов с сервера). Второй будет использоваться для публикации на сервере (добавления или обновления файлов nupkg.)

Шаг 3 - Обновления учетных данных для добавленных источников (Build Server, Publishers)

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"

Здесь мы добавили учетные данные в конфигурацию, если вы просматриваете %APPDATA%\NuGet\NuGet.config, вы должны увидеть добавленные каналы, а также зашифрованные учетные данные.

Если у вас нет возможности входа в систему в качестве сервера, можно сохранить учетные данные в ясном тексте, используя параметр StorePasswordInClearText, но это не рекомендуется в общей среде.

Шаг 4 - (необязательно) Отключите URL публикации в Visual Studio (разработчики)

Откройте Visual Studio и перейдите к диалоговому окну настроек диспетчера пакетов NuGet, отключите фид "Fabrikam Publish". Это не повлияет на вашу способность публиковать, однако, если вы не отключите этот канал, вы получите ошибки при попытке обновления пакетов для всех источников (так как это URL-адрес публикации, а не URL-адрес фида).

Шаг 5 - (необязательно) Сохранять учетные данные Windows в Visual Studio (разработчики)

Откройте Visual Studio и перейдите к диспетчеру пакетов NuGet, нажмите "Fabrikam Feed". Вам будут предложены учетные данные. Здесь вы можете ввести учетные данные и указать параметры сохранения/сохранения. Это гарантирует, что попытка обновления фида в Visual Studio не будет постоянно запрашивать учетные данные. В последних версиях диспетчера пакетов NuGet канал загружается с использованием стандартного HTTP-запроса, а учетные данные, которые вы сохранили в файле nuget.config, НЕ используются.

Примечания:

  • Вам не требуется стороннее решение для размещения приватных безопасных каналов. Сервер NuGet свободно доступен, а безопасность NTLM/AD/Windows поддерживается инструментами IIS и NuGet.

  • Разработчики, которым не нужно публиковать в фид, не должны хранить учетные данные в своей конфигурации. Они также не нуждаются в настройке "Опубликовать". Это необходимо только для серверов сборки или других издателей (Re: Шаги 2 и 3.)

  • Все разработчики, которые будут использовать фид пакетов, будут заинтересованы в Шаге 5, это должно быть все, что требуется для большинства разработчиков. Они могут просто добавить фид из Visual Studio, а затем ввести свои учетные данные при появлении запроса.

  • При изменении учетных данных вы можете перейти в меню "Пуск" → "Управление учетными данными Windows" и удалить "VSCredentials_nuget.fabrikam.com".

  • Шаг 2 можно выполнить в visual studio, но для ясности я дал здесь командную строку. Шаг 3, однако, должен выполняться через командную строку (или с помощью API NuGet.)

  • В будущей версии слуха NuGet информация о достоверности может храниться на уровне решения или проекта (детали не ясны), это, скорее всего, представляет интерес только для людей в среде с несколькими арендаторами, где они не имеют доступ к серверу сборки.

Надеюсь, это поможет кому-то еще!

Ответ 2

Решением, которое я выбрал, было использование TeamCity как сервера NuGet; в то время как это немного хлопот, чтобы настроить, потому что ему не хватает функции nuget push, теперь он работает красиво и без каких-либо дополнительных затрат, обслуживающих пакеты NuGet только для аутентифицированных пользователей.

Ответ 3

Если вы хотите действительно защитить каналы и выставить их в Интернете, вы можете взглянуть на MyGet.org, где вы можете создать частные каналы, требующие базовой аутентификации, по умолчанию на SSL/HTTPS.

Пригласите людей, которых вы хотите на свой канал, и назначьте их разрешения в течение нескольких кликов по подписке, используя ваш предпочтительный поставщик удостоверений (Live Id, Facebook, Google, Stackoverflow, GitHub, OAuth и т.д.) или даже ваши собственные корпоративные ADFS (корпоративный план).

Дополнительная информация: https://www.myget.org/plans Для получения справки по настройке подлинности в визуальной студии или на сервере сборки проверьте нашу документацию на https://docs.myget.org и наш blog. Если вам нужна дополнительная помощь, мы будем рады помочь с Twitter через нашу контактную форму или с помощью вопросов StackOverflow, помеченных MyGet.