Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В версии 4.8+ все клиенты NuGet (NuGet.exe, Visual Studio, dotnet.exe и MSBuild.exe) могут использовать плагин аутентификации, основанный на модели кроссплатформенных плагинов NuGet.
Проверка подлинности в dotnet.exe
Visual Studio и NuGet.exe по умолчанию являются интерактивными. NuGet.exe содержит переключатель, чтобы сделать его не интерактивным. Кроме того, подключаемые модули NuGet.exe и Visual Studio запрашивают у пользователя ввод. В dotnet.exe нет запроса, и по умолчанию режим работы не является интерактивным.
Механизм проверки подлинности в dotnet.exe — это поток устройств. При интерактивном выполнении операции восстановления или добавления пакета в командной строке будут предоставлены блоки операций и инструкции пользователю, как выполнить проверку подлинности. После завершения проверки подлинности пользователь продолжит операцию.
Чтобы сделать операцию интерактивной, следует передать --interactive.
В настоящее время только явные dotnet restoredotnet add package команды поддерживают интерактивный коммутатор.
На dotnet build и dotnet publish отсутствует интерактивный переключатель.
Проверка подлинности в MSBuild
Как и dotnet.exe, MSBuild.exe по умолчанию не поддерживает интерактивный режим, механизм проверки подлинности MSBuild.exe является потоком устройства.
Чтобы разрешить восстановлению приостановиться и ждать проверки подлинности, вызовите восстановление с помощью msbuild -t:restore -p:NuGetInteractive="true".
Создание межплатформенного плагина для проверки подлинности
Пример реализации можно найти в плагине Microsoft Credential Provider.
Очень важно, чтобы подключаемые модули соответствовали требованиям безопасности, установленным клиентскими средствами NuGet. Минимальная требуемая версия для плагина, чтобы он был плагином аутентификации, — 2.0.0. NuGet выполнит рукопожатие с подключаемым модулем и запросит поддерживаемые утверждения операций. Дополнительные сведения об определенных сообщениях см. в подключаемом модуле NuGet сообщениях протокола.
NuGet установит уровень логирования и предоставит сведения о прокси-сервере подключаемому модулю, когда это применимо. Логгирование в консоли NuGet допустимо только после того, как NuGet установит уровень логирования для плагина.
- Поведение проверки подлинности плагина .NET Framework
В .NET Framework подключаемые модули могут запрашивать у пользователя ввод, представляя его в виде диалогового окна.
- Поведение проверки подлинности плагина .NET Core
В .NET Core не удается показать диалоговое окно. Подключаемые модули должны использовать поток устройств для проверки подлинности. Плагин может отправлять журнальные сообщения в NuGet с инструкциями для пользователя. Обратите внимание, что логирование доступно после установки уровня журнала для плагина. NuGet не будет принимать интерактивные входные данные из командной строки.
Когда клиент вызывает подключаемый модуль с учетными данными проверки подлинности, подключаемые модули должны соответствовать переключателю интерактивности и уважать переключатель диалога.
В следующей таблице приведены сведения о том, как должен вести себя подключаемый модуль для всех сочетаний.
| IsNonInteractive | CanShowDialog | Поведение подключаемого модуля |
|---|---|---|
| true | true | Переключение IsNonInteractive имеет приоритет над переключателем диалога. Плагину не разрешено блокировать. |
| true | false | Переключение IsNonInteractive имеет приоритет над переключателем диалога. Плагину не разрешено блокировать. |
| false | true | Подключаемый модуль может отображать диалоговое окно при необходимости. Например, интерактивный вход или выбор учетной записи. |
| false | false | Подключаемый модуль не должен/не может отображать диалоговое окно. Подключаемый модуль должен использовать поток устройства для аутентификации, записывая сообщение с инструкцией через логгер. |
До NuGet 7.0 NuGet всегда будет устанавливать CanShowDialog значение false в интерфейсе командной строки dotnet и значение true для восстановления MSBuild.
Начиная с версии 7.0, NuGet всегда будет устанавливать CanShowDialog в значение true, но подключаемые модули по-прежнему должны определять, когда графические интерфейсы недоступны.
Например, при запуске на Linux через SSH-подключение без переадресации X или в удаленном сеансе PowerShell.
Прежде чем писать плагин, обратитесь к следующим техническим параметрам.