Проверка подлинности поставщиков учетных данных nuget.exe в веб-каналах
В службе поддержки версий добавлены nuget.exe
определенные поставщики учетных данных 3.3
(версии 1). С тех пор добавлена поддержка версий 4.8
для поставщиков учетных данных версии 2, которые работают во всех сценариях командной строки (nuget.exe
, dotnet.exe
, ). msbuild.exe
Дополнительные сведения о всех подходах к проверке подлинности см. в разделе "Использование пакетов" из проверенных веб-каналов.
Обнаружение поставщика учетных данных nuget.exe
Поставщиков учетных данных nuget.exe можно использовать тремя способами.
Глобально. Чтобы сделать поставщика учетных данных доступным всем экземплярам
nuget.exe
, запускаемым с использованием профиля текущего пользователя, добавьте его в папку%LocalAppData%\NuGet\CredentialProviders
. Возможно, потребуется создать папкуCredentialProviders
. Поставщики учетныхCredentialProviders
данных можно установить в корне папки или в вложенной папке. Если поставщик учетных данных имеет несколько файлов или сборок, можно использовать вложенные папки для организации поставщиков.Из переменной среды: поставщики учетных данных могут храниться в любом месте и получать доступ к
nuget.exe
ней, установив%NUGET_CREDENTIALPROVIDERS_PATH%
переменную среды в расположение поставщика. Эта переменная может быть списком, разделенным точкой с запятой (например,path1;path2
), если имеется несколько расположений.Вместе с nuget.exe. Поставщиков учетных данных можно поместить в одну папку с
nuget.exe
.
При загрузке поставщиков учетных данных nuget.exe
выполняет поиск всех файлов с именем credentialprovider*.exe
в указанных выше расположениях, а затем загружает эти файлы в том порядке, в котором они найдены. Если в одной папке есть несколько поставщиков учетных данных, они загружаются в алфавитном порядке.
Создание поставщика учетных данных nuget.exe
Поставщик учетных данных — это исполняемый файл командной строки с именем в формате CredentialProvider*.exe
, который собирает входные данные, получает учетные данные и возвращает соответствующий код состояния выхода и стандартные выходные данные.
Поставщик должен выполнять следующие действия.
- Определять, может ли он предоставлять учетные данные для целевого URI перед получением учетных данных. В противном случае возвращается код состояния 1 без учетных данных.
- Не изменять
NuGet.Config
(например, записывая туда учетные данные). - Самостоятельно обрабатывать конфигурацию HTTP-прокси, так как NuGet не предоставляет подключаемому модулю сведения о прокси-сервере.
- Возвращать учетные данные или сведения об ошибке в
nuget.exe
, записав объект ответа JSON (см. ниже) в stdout с использованием кодировки UTF-8. - При необходимости выдавать дополнительную запись журнала трассировки в stderr. Никакие конфиденциальные данные не должны записываться в stderr, так как при уровне детализации "нормальная" или "детально" NuGet выводит эти трассировки в консоль.
- Непредусмотренные параметры должны игнорироваться, обеспечивая прямую совместимость с будущими версиями NuGet.
Входные параметры
Параметр или переключатель | Description |
---|---|
URI {значение} | URI источника пакета, которому требуются учетные данные. |
NonInteractive | При указании поставщик не выдает интерактивных запросов. |
IsRetry | При наличии указывает, что эта попытка является повторной после ранее неудачной попытки. Поставщики обычно используют этот флаг, чтобы убедиться, что они обходят весь существующий кэш и запрашивают новые учетные данные, если это возможно. |
Verbosity {значение} | При указании используется одно из следующих значений: "normal" (обычный), "quiet" (тихий) или "detailed" (подробный). Если значение не указано, по умолчанию используется "normal". Поставщики должны использовать это как показатель уровня дополнительного журналирования, выдаваемого в стандартный поток ошибок. |
Коды выхода
Код | Результат | Description |
---|---|---|
0 | Удачное завершение | Учетные данные успешно получены и записаны в stdout. |
1 | ProviderNotApplicable | Текущий поставщик не предоставляет учетные данные для данного URI. |
2 | Сбой | Поставщик является верным поставщиком для данного URI, но не может предоставить учетные данные. В этом случае nuget.exe не будет повторять проверку подлинности и завершится с ошибкой. Типичный пример — ситуация, когда пользователь отменяет интерактивный вход в систему. |
Стандартные выходные данные
Свойство | Примечания. |
---|---|
Username | Имя пользователя для запросов, прошедших проверку подлинности. |
Пароль | Пароль для запросов, прошедших проверку подлинности. |
Сообщение | Дополнительные сведения об ответе. Используются только для отображения дополнительных сведений в случае сбоя. |
Пример stdout:
{ "Username" : "freddy@example.com",
"Password" : "bwm3bcx6txhprzmxhl2x63mdsul6grctazoomtdb6kfbof7m3a3z",
"Message" : "" }
Устранение неполадок с поставщиком учетных данных
В настоящее время NuGet не предоставляет значительной поддержки для отладки пользовательских поставщиков учетных данных. Работа по в этом направлении отслеживается в проблеме 4598.
Можно также выполнить следующее:
Запустите файл nuget.exe с параметром
-verbosity
, чтобы просмотреть подробные выходные данные.Добавьте в соответствующих местах вывод отладочных сообщений в
stdout
.Убедитесь, что используется nuget.exe 3.3 или более поздней версии.
Присоедините отладчик при запуске с помощью следующего фрагмента кода.
while (!Debugger.IsAttached) { System.Threading.Thread.Sleep(100); } Debugger.Break();