Udostępnij przez


Uwierzytelnianie kanałów z użyciem dostawców poświadczeń nuget.exe

W wersji 3.3 dodano obsługę dla specyficznych dostawców poświadczeń (v1). Od tego czasu dodano obsługę wersji 4.8dla dostawców poświadczeń (v2), którzy pracują we wszystkich scenariuszach wiersza polecenia (nuget.exe, dotnet.exe, msbuild.exe).

Aby uzyskać więcej informacji na temat wszystkich podejść uwierzytelniania, zobacz Korzystanie z pakietów z uwierzytelnionych źródeł danych .

odnajdywanie dostawcy poświadczeń nuget.exe

nuget.exe dostawców poświadczeń można używać na 3 sposoby:

  • Globalnie: aby udostępnić dostawcę poświadczeń wszystkim wystąpieniom nuget.exe uruchamianych w profilu bieżącego użytkownika, dodaj go do %LocalAppData%\NuGet\CredentialProviders. Może być konieczne utworzenie CredentialProviders folderu. Dostawców poświadczeń można zainstalować w katalogu głównym CredentialProviders folderu lub w podfolderze. Jeśli dostawca poświadczeń ma wiele plików/pakietów, możesz użyć podfolderów, aby utrzymać ich organizację.

  • Ze zmiennej środowiskowej: dostawcy poświadczeń mogą być przechowywani w dowolnym miejscu i umożliwienie dostępu do nuget.exe odbywa się przez ustawienie zmiennej środowiskowej %NUGET_CREDENTIALPROVIDERS_PATH% do lokalizacji dostawcy. Ta zmienna może być listą rozdzieloną średnikami (na przykład path1;path2), jeśli masz wiele lokalizacji.

  • Obok nuget.exe: dostawcy poświadczeń dla nuget.exe powinni być umieszczone w tym samym folderze, co .

Podczas ładowania dostawców poświadczeń nuget.exe przeszukuje powyższe lokalizacje w kolejności, dla każdego pliku o nazwie credentialprovider*.exe, a następnie ładuje te pliki w kolejności ich znalezienia. Jeśli w tym samym folderze istnieje wiele dostawców poświadczeń, są one ładowane w kolejności alfabetycznej.

Tworzenie dostawcy poświadczeń dla nuget.exe

Dostawca poświadczeń jest plikiem wykonywalnym wiersza polecenia o nazwie w formularzu CredentialProvider*.exe, który zbiera dane wejściowe, uzyskuje poświadczenia zgodnie z potrzebami, a następnie zwraca odpowiedni kod stanu zakończenia i standardowe dane wyjściowe.

Dostawca musi wykonać następujące czynności:

  • Ustal, czy można dostarczyć poświadczenia dla docelowego identyfikatora URI przed rozpoczęciem pozyskiwania poświadczeń. Jeśli nie, powinien zwrócić kod stanu 1 bez poświadczeń.
  • Nie można modyfikować NuGet.Config (na przykład ustawiać tam poświadczenia).
  • Zarządzaj konfiguracją serwera proxy HTTP samodzielnie, ponieważ NuGet nie przekazuje informacji o serwerze proxy wtyczce.
  • Zwrócić poświadczenia lub szczegóły błędu do nuget.exe poprzez zapisanie obiektu odpowiedzi JSON (patrz poniżej) na stdout, używając kodowania UTF-8.
  • Opcjonalnie emituj dodatkowe rejestrowanie śledzenia do narzędzia stderr. Żadne tajne dane nigdy nie powinny być zapisywane w stderr, ponieważ na poziomach szczegółowości „normalny” lub „szczegółowy” takie ślady są wyświetlane przez NuGet na konsoli.
  • Nieoczekiwane parametry powinny być ignorowane, zapewniając zgodność z przyszłymi wersjami narzędzia NuGet.

Wprowadź parametry

Parametr/przełącznik Description
Identyfikator URI {value} URI źródła pakietu wymagający poświadczeń.
Nieinteraktywny Jeśli jest obecny, dostawca nie wystawia interakcyjnych monitów.
IsRetry Jeśli jest obecny, wskazuje, że ta próba jest ponowieniem wcześniej nieudanej próby. Dostawcy zazwyczaj używają tej flagi, aby mieć pewność, że pomijają wszelkie istniejące pamięci podręczne i proszą o podanie nowych poświadczeń, jeśli to możliwe.
Rozwlekłość {value} Jeśli występuje, jedna z następujących wartości: "normalna", "cicha" lub "szczegółowa". Jeśli żadna wartość nie jest podana, wartość domyślna to "normal". Dostawcy powinni użyć tego jako wskazania poziomu opcjonalnego rejestrowania w celu emisji do standardowego strumienia błędów.

Kody zakończenia

Code Wynik Description
0 Powodzenie Poświadczenia zostały pomyślnie uzyskane i zostały zapisane w pliku stdout.
1 DostawcaNieDotyczy Bieżący dostawca nie udostępnia poświadczeń dla danego identyfikatora URI.
2 Failure Dostawca jest prawidłowym dostawcą dla danego identyfikatora URI, ale nie może podać poświadczeń. W takim przypadku nuget.exe nie ponawia próby uwierzytelnienia i zakończy się niepowodzeniem. Typowym przykładem jest anulowanie logowania interakcyjnego przez użytkownika.

Wyjście standardowe

Majątek Notatki
Nazwa użytkownika Nazwa użytkownika dla uwierzytelnionych żądań.
Hasło Hasło do uwierzytelnionych żądań.
Message Opcjonalne szczegóły dotyczące odpowiedzi, używane tylko do wyświetlania dodatkowych szczegółów w przypadkach awarii.

Przykładowy limit czasu:

{ "Username" : "freddy@example.com",
    "Password" : "bwm3bcx6txhprzmxhl2x63mdsul6grctazoomtdb6kfbof7m3a3z",
    "Message"  : "" }

Rozwiązywanie problemów z dostawcą poświadczeń

Obecnie narzędzie NuGet nie zapewnia wiele bezpośredniego wsparcia dla debugowania niestandardowych dostawców poświadczeń; zadanie 4598 śledzi tę pracę.

Możesz również wykonać następujące czynności:

  • Uruchom nuget.exe z przełącznikiem -verbosity, aby przejrzeć szczegółowe dane wyjściowe.

  • Dodaj komunikaty debugowania w odpowiednich miejscach do stdout.

  • Upewnij się, że używasz nuget.exe wersji 3.3 lub nowszej.

  • Dołącz debuger podczas uruchamiania przy użyciu tego fragmentu kodu:

    while (!Debugger.IsAttached)
    {
        System.Threading.Thread.Sleep(100);
    }
    Debugger.Break();