Udostępnij za pośrednictwem


Wtyczka uwierzytelniania NuGet dla wielu platform

W wersji 4.8 lub nowszej wszystkie klienci NuGet (NuGet.exe, Visual Studio, dotnet.exe i MSBuild.exe) mogą używać wtyczki uwierzytelniania utworzonej na podstawie modelu wtyczek międzyplatformowych NuGet.

Uwierzytelnianie w dotnet.exe

Program Visual Studio i NuGet.exe są domyślnie interaktywne. NuGet.exe zawiera przełącznik, aby uczynić go nieinterakcyjnym. Ponadto wtyczki NuGet.exe i Visual Studio monitują użytkownika o wprowadzenie danych wejściowych. W dotnet.exe nie ma monitu, a wartość domyślna nie jest interaktywna.

Mechanizm uwierzytelniania w dotnet.exe to przepływ urządzenia. Gdy operacja przywracania lub dodawania pakietu jest uruchamiana interaktywnie, bloki operacji i instrukcje dla użytkownika dotyczące sposobu ukończenia uwierzytelniania będą udostępniane w wierszu polecenia. Gdy użytkownik ukończy uwierzytelnianie, operacja będzie kontynuowana.

Aby wykonać operację interaktywną, należy przekazać element --interactive. Obecnie tylko jawne dotnet restore polecenia i dotnet add package obsługują przełącznik interaktywny. Nie ma przełącznika interakcyjnego dotnet build i dotnet publish.

Uwierzytelnianie w programie MSBuild

Podobnie jak dotnet.exe, MSBuild.exe jest domyślnie nieinterakcyjnym mechanizmem uwierzytelniania MSBuild.exe jest przepływ urządzenia. Aby zezwolić na wstrzymanie przywracania i oczekiwanie na uwierzytelnienie, wywołaj funkcję przywracania za pomocą polecenia msbuild -t:restore -p:NuGetInteractive="true".

Tworzenie wtyczki uwierzytelniania międzyplatformowego

Przykładową implementację można znaleźć w wtyczce dostawcy poświadczeń firmy Microsoft.

Bardzo ważne jest, aby wtyczki były zgodne z wymaganiami dotyczącymi zabezpieczeń określonymi przez narzędzia klienckie NuGet. Minimalna wymagana wersja wtyczki jako wtyczka uwierzytelniania to 2.0.0. Narzędzie NuGet wykona uzgadnianie z wtyczką i wykona zapytanie dotyczące obsługiwanych oświadczeń operacji. Aby uzyskać więcej informacji na temat określonych komunikatów, zapoznaj się z komunikatami protokołu wtyczki międzyplatformowych NuGet.

Narzędzie NuGet ustawi poziom dziennika i przekaże informacje o serwerze proxy do wtyczki, jeśli ma to zastosowanie. Rejestrowanie w konsoli NuGet jest dopuszczalne tylko po ustawieniu poziomu dziennika na wtyczkę nuGet.

  • Zachowanie uwierzytelniania wtyczki .NET Framework

W programie .NET Framework wtyczki mogą monitować użytkownika o dane wejściowe w formie okna dialogowego.

  • Zachowanie uwierzytelniania wtyczki platformy .NET Core

W programie .NET Core nie można wyświetlić okna dialogowego. Wtyczki powinny używać przepływu urządzenia do uwierzytelniania. Wtyczka może wysyłać komunikaty dziennika do narzędzia NuGet z instrukcjami dla użytkownika. Pamiętaj, że rejestrowanie jest dostępne po ustawieniu poziomu dziennika na wtyczkę. Narzędzie NuGet nie będzie pobierać żadnych interakcyjnych danych wejściowych z wiersza polecenia.

Gdy klient wywołuje wtyczkę przy użyciu poświadczeń uwierzytelniania get, wtyczki muszą być zgodne z przełącznikiem interakcyjności i szanować przełącznik okna dialogowego.

W poniższej tabeli podsumowano, jak wtyczka powinna zachowywać się dla wszystkich kombinacji.

IsNonInteractive CanShowDialog Zachowanie wtyczki
prawda prawda Przełącznik IsNonInteractive ma pierwszeństwo przed przełącznikiem okna dialogowego. Wtyczka nie może wyskakować okna dialogowego. Ta kombinacja jest prawidłowa tylko w przypadku wtyczek programu .NET Framework
prawda fałsz Przełącznik IsNonInteractive ma pierwszeństwo przed przełącznikiem okna dialogowego. Wtyczka nie może blokować. Ta kombinacja jest prawidłowa tylko w przypadku wtyczek platformy .NET Core
fałsz prawda Wtyczka powinna wyświetlić okno dialogowe. Ta kombinacja jest prawidłowa tylko w przypadku wtyczek programu .NET Framework
fałsz fałsz Wtyczka powinna/nie może wyświetlić okna dialogowego. Wtyczka powinna używać przepływu urządzenia do uwierzytelniania, rejestrując komunikat instrukcji za pośrednictwem rejestratora. Ta kombinacja jest prawidłowa tylko w przypadku wtyczek platformy .NET Core

Przed napisaniem wtyczki zapoznaj się z następującymi specyfikacjami.