2013-07-29 3 views
20

release notes для NuGet 1,5 состояниясервер Настройка NuGet использовать проверку подлинности

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

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

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

я сделал создать приложение без AUTH, как описано в Создание Remote Feeds раздел в documentation, и он прекрасно работает в локальной сети. Что мне нужно сделать, чтобы включить аутентификацию в этом репо?

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

ответ

0

Если вы хотите действительно защищать каналы и выставлять их в Интернете, вы можете взглянуть на 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.

+2

Да, я видел MyGet, но размещение наших библиотек на некоторых серверах где-то не является вариантом. – Wilbert

2

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

36

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

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

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

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

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

Более подробная информация о стандартной конфигурации IIS для проверки подлинности Windows можно найти on TechNet включая настройку из командной строки и позволяет Обсуди

Шаг 2 (если это ваша цель.) - Добавление источников в NuGet Config (Сборка сервера, издатели)

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 - (Необязательно) Отключите Publish URL в Visual Studio (разработчики)

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

Шаг 5 - (Необязательно) витринах Полномочия в Visual Studio (разработчики)

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

Примечание:

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

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

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

  4. При изменении учетных данных вы можете перейти в меню «Пуск» -> «Управление учетными данными Windows» и удалить «VSCredentials_nuget.fabrikam.com».

  5. Шаг 2 может быть выполнен в визуальной студии, но для ясности я дал здесь командную строку. Шаг 3, однако, должен выполняться через командную строку (или с использованием API-интерфейсов NuGet.)

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

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

+0

Этот ответ на самом деле не отвечает на вопрос. Это касается только настройки nuget на клиенте, а не на сервере. Предполагается, что фактическая проблема, поставленная в вопросе (аутентифицированный сервер), уже решена. – Wilbert

+2

Это связано с тем, что исходный заголовок SO был «настройка nuget для использования аутентификации», что является общей проблемой, однако я обновил ответ с дополнительным шагом для конфигурации IIS auth, включая ссылку на справочную статью для технологов, которая объясняет конфигурацию auth в деталях. Этот ответ должен служить округленным решением для NuGet Server, Build Server/Publishers и Developers. –

+0

Итак, если я включу NTLM в IIS, как вы предлагаете, только люди с действительными учетными данными AD могут загружать пакеты с этого сервера? – Wilbert

Смежные вопросы