Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 monituje użytkownika o podanie 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ądzeń. 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 działanie było interaktywne, należy przekazać element --interactive.
Obecnie tylko jawne polecenia dotnet restore i dotnet add package wspierają przełącznik interaktywny.
Nie ma przełącznika interakcyjnego dotnet build i dotnet publish.
Uwierzytelnianie w programie MSBuild
Podobnie jak dotnet.exe, MSBuild.exe działa domyślnie w trybie nieinteraktywnym. Mechanizm uwierzytelniania MSBuild.exe to przepływ urządzeniowy.
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 negocjację z wtyczką i wykona zapytanie dotyczące obsługiwanych żądań operacji. Aby uzyskać więcej informacji na temat określonych komunikatów, zapoznaj się z komunikatami protokołu wtyczki międzyplatformowych NuGet.
NuGet ustawi poziom logowania i przekaże informacje o serwerze proxy do wtyczki, jeśli dotyczy. Rejestrowanie w konsoli NuGet jest dopuszczalne tylko po tym, jak NuGet ustawi poziom dziennika dla wtyczki.
- Zachowanie uwierzytelniania wtyczki .NET Framework
W ramach .NET Framework wtyczki mogą powiadamiać użytkownika o dane wejściowe w formie okna dialogowego.
- Zachowanie uwierzytelniania wtyczki .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 logowanie jest dostępne po ustawieniu poziomu dziennika we wtyczce. Narzędzie NuGet nie będzie pobierać żadnych interakcyjnych danych wejściowych z wiersza polecenia.
Gdy klient wywołuje funkcję wtyczki dotyczącą pobierania poświadczeń uwierzytelniania, wtyczki muszą być zgodne z trybem interaktywności i respektować ustawienia okna dialogowego.
W poniższej tabeli podsumowano, jak wtyczka powinna zachowywać się dla wszystkich kombinacji.
| IsNonInteractive | CanShowDialog | Zachowanie wtyczki |
|---|---|---|
| true | true | Przełącznik IsNonInteractive ma pierwszeństwo przed przełącznikiem okna dialogowego. Wtyczka nie może blokować. |
| true | false | Przełącznik IsNonInteractive ma pierwszeństwo przed przełącznikiem okna dialogowego. Wtyczka nie może blokować. |
| false | true | Wtyczka może wyświetlić okno dialogowe, jeśli jest to wymagane. Na przykład wybór logowania interakcyjnego lub konta. |
| false | false | Wtyczka powinna/nie może wyświetlić okna dialogowego. Wtyczka powinna używać przepływu urządzeń do uwierzytelniania, rejestrując wiadomość instrukcyjną przez rejestrator. |
Przed NuGet 7.0, NuGet zawsze ustawiał CanShowDialog na false w interfejsie wiersza polecenia dotnet, a na true dla przywracania MSBuild.
W wersji 7.0 NuGet zawsze będzie ustawiał CanShowDialog na prawda, ale wtyczki powinny nadal wykrywać, gdy graficzne interfejsy użytkownika nie są dostępne.
Na przykład w przypadku uruchamiania w systemie Linux za pośrednictwem połączenia SSH bez przekazywania X lub sesji zdalnej programu PowerShell.
Przed napisaniem wtyczki zapoznaj się z następującymi specyfikacjami.