Настройка сервера NuGet для использования аутентификации
Замечания к выпуску для NuGet 1.5 state
NuGet now supports connecting to private repositories that require basic
or NTLM authentication.
Тем не менее, ссылка, содержащаяся там, просто ведет к размещению вашей собственной страницы фидов нугетов, без какого-либо дальнейшего упоминания о том, как настроить аутентификацию.
Я хотел бы настроить сервер NuGet, который доступен через https из Интернета, но позволяет только тем, кто может успешно пройти проверку подлинности, просматривать или загружать пакеты на сервер.
Я создал приложение без авторизации, как описано в разделе " Создание удаленных каналов " в документации, и оно прекрасно работает в интрасети. Что мне нужно сделать, чтобы включить аутентификацию на этом репо?
Дополнительным требованием будет то, что решение не должно стоить сотни долларов (первые два ответа представляют продукты, которые могут решить проблему, но стоят дорого).
3 ответа
Это можно сделать, включив проверку подлинности Windows на веб-сайте и добавив учетные данные на сервере сборки с помощью параметра командной строки Sources, по умолчанию учетные данные хранятся с использованием ключа DPAPI, доступного только текущему пользователю на текущем компьютере (таким образом, для на сервере сборки, вам нужно будет добавить учетные данные при входе в систему под учетной записью службы.)
Для рабочих станций разработчиков вам нужно только добавить канал в диспетчере пакетов NuGet, а затем ввести / сохранить учетные данные при обновлении канала (вам будет предложено).
Шаг 1. Требуется проверка подлинности на сервере NuGet (настройка IIS)
Вы должны убедиться, что модуль аутентификации, который вы хотите использовать, установлен для IIS, для аутентификации NTLM вам понадобится модуль аутентификации Windows. После установки вы можете открыть диспетчер IIS и перейти на свой веб-сайт, открыть параметры проверки подлинности и включить проверку подлинности Windows, не забудьте отключить все модули проверки подлинности, которые вы не хотите поддерживать (например, Anonymous, Basic и т. Д.)
Чтобы убедиться, что используются учетные данные пользователя, щелкните правой кнопкой мыши узел и выберите "Дополнительные параметры", затем нажмите кнопку "Физические данные пути". В диалоговом окне убедитесь, что выбран "Пользователь приложения (сквозная аутентификация)".
Более подробную информацию о стандартной конфигурации IIS для проверки подлинности Windows можно найти на TechNet, включая настройку из командной строки и включение согласования (если это было вашей целью).
Шаг 2. Добавление источников в 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/"
Здесь мы добавляем две записи, одна из которых будет использоваться в качестве обычного аутентифицированного URL-адреса фида (для получения пакетов с сервера). Вторая будет использоваться для публикации на сервере (добавления или обновления файлов nupkg.)
Шаг 3 - Обновите учетные данные для добавленных источников (Сервер сборки, Издатели)
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". Это не повлияет на вашу возможность публикации, однако, если вы не отключите этот канал, вы получите ошибки при попытке обновить пакеты для всех источников (так как это URL публикации, а не URL канала).
Шаг 5 - (Необязательно) Сохранение учетных данных Windows в Visual Studio (разработчики)
Откройте Visual Studio и перейдите к диспетчеру пакетов NuGet, нажмите "Лента Fabrikam". Вам нужно будет ввести учетные данные. Здесь вы можете ввести учетные данные и отметить опции сохранения / запоминания. Это гарантирует, что при попытке обновить канал в Visual Studio не будет постоянно запрашиваться учетные данные. В последних выпусках NuGet Package Manager канал выбирается с использованием стандартного HTTP-запроса, а учетные данные, сохраненные в nuget.config, НЕ используются.
Заметки:
Вам не нужно стороннее решение для размещения частных, безопасных каналов. Сервер NuGet находится в свободном доступе, а безопасность NTLM/AD/Windows поддерживается инструментами IIS и NuGet.
Разработчикам, которым не нужно публиковаться в ленте, не нужно хранить учетные данные в своей конфигурации. Им также не требуется настроенный канал "Публикация". Это необходимо только для серверов сборки или других издателей (см. Шаги 2 и 3.)
Все разработчики, которые будут использовать пакетную рассылку, будут заинтересованы в Шаге 5, это должно быть все, что требуется большинству разработчиков. Они могут просто добавить канал из Visual Studio, а затем ввести свои учетные данные при появлении запроса.
Если учетные данные изменяются, вы можете перейти в "Пуск" -> "Управление учетными данными Windows" и удалить "VSCredentials_nuget.fabrikam.com".
Шаг 2 можно выполнить в Visual Studio, но для ясности я привел здесь командную строку. Шаг 3, однако, должен выполняться через командную строку (или с использованием API NuGet.)
В будущем выпуске слухов о NuGet информация о полномочиях может храниться на уровне решения или проекта (детали неясны), это, вероятно, представляет интерес только для людей в многопользовательской среде сборки, где у них нет доступа к серверу сборки.,
Надеюсь, что это поможет кому-то еще там!
Решение, которое я фактически выбрал, состояло в том, чтобы использовать TeamCity в качестве сервера NuGet; Хотя это немного хлопотно в настройке, поскольку в нем отсутствует функциональность push-уведомлений Nuget, теперь он работает хорошо и без дополнительных затрат обслуживает пакеты NuGet только для аутентифицированных пользователей.
Если вам нужны действительно безопасные каналы и выкладывают их в Интернет, вы можете взглянуть на MyGet.org, где вы можете создавать частные каналы, требующие базовой аутентификации, по умолчанию на SSL/HTTPS.
Пригласите людей, которых вы хотите, в свой фид и назначьте их разрешения, в течение нескольких щелчков мыши после регистрации, используя предпочитаемого вами поставщика удостоверений (Live Id, Facebook, Google, Stackru, GitHub, OAuth и т. Д.) Или даже собственную корпоративную ADFS (корпоративную план).
Дополнительная информация: https://www.myget.org/plans Для получения справки по настройке аутентификации в пределах Visual Studio или на вашем сервере сборки ознакомьтесь с нашей документацией по адресу https://docs.myget.org/ и в нашем блоге. Если вам понадобится дополнительная помощь, мы будем рады помочь в Твиттере, через нашу контактную форму или через вопросы Stackru, помеченные MyGet.