Поделиться через


Кроссплатформенный подключаемый модуль проверки подлинности NuGet

В версии 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"помощью.

Создание подключаемого модуля межплатформенной проверки подлинности

Пример реализации можно найти в подключаемом модуле поставщика учетных данных Майкрософт.

Очень важно, чтобы подключаемые модули соответствовали требованиям безопасности, установленным клиентскими средствами NuGet. Минимальная требуемая версия для подключаемого модуля проверки подлинности — 2.0.0. NuGet выполнит подтверждение с подключаемым модулем и запросит утверждения поддерживаемой операции. Дополнительные сведения об определенных сообщениях см. в сообщениях протоколах протокола подключаемых модулей NuGet.

NuGet устанавливает уровень журнала и предоставляет сведения о прокси-сервере подключаемому модулю при необходимости. Ведение журнала в консоли NuGet допустимо только после того, как NuGet установил уровень журнала для подключаемого модуля.

  • поведение проверки подлинности подключаемого модуля платформа .NET Framework

В платформа .NET Framework подключаемые модули могут запрашивать пользователя для ввода в виде диалогового окна.

  • Поведение проверки подлинности подключаемого модуля .NET Core

В .NET Core не удается показать диалоговое окно. Подключаемые модули должны использовать поток устройств для проверки подлинности. Подключаемый модуль может отправлять сообщения журнала в NuGet с инструкциями пользователю. Обратите внимание, что ведение журнала доступно после установки подключаемого модуля уровня журнала. NuGet не будет принимать интерактивные входные данные из командной строки.

Когда клиент вызывает подключаемый модуль с учетными данными проверки подлинности, подключаемые модули должны соответствовать переключателю интерактивности и уважать переключатель диалога.

В следующей таблице приведены сведения о том, как должен вести себя подключаемый модуль для всех сочетаний.

IsNonInteractive CanShowDialog Поведение подключаемого модуля
true true Переключение IsNonInteractive имеет приоритет над переключателем диалога. Подключаемый модуль не может появиться в диалоговом окне. Это сочетание допустимо только для подключаемых модулей платформа .NET Framework
true false Переключение IsNonInteractive имеет приоритет над переключателем диалога. Подключаемый модуль не может блокироваться. Это сочетание допустимо только для подключаемых модулей .NET Core
false true Подключаемый модуль должен отображать диалоговое окно. Это сочетание допустимо только для подключаемых модулей платформа .NET Framework
false false Подключаемый модуль не может отображать диалоговое окно. Подключаемый модуль должен использовать поток устройств для проверки подлинности путем ведения журнала сообщения инструкции с помощью средства ведения журнала. Это сочетание допустимо только для подключаемых модулей .NET Core

Прежде чем писать подключаемый модуль, обратитесь к следующим спецификациям.