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.