Authentifiziersfeeds mit nuget.exe-Anmeldeinformationsanbietern
In Version 3.3
wurde Unterstützung für nuget.exe
-spezifische (v1) Anmeldeinformationsanbieter hinzugefügt. Danach wurde in Version 4.8
Unterstützung für Anmeldeinformationsanbieter (v2) hinzugefügt, die über alle Befehlszeilenszenarien (nuget.exe
, dotnet.exe
, msbuild.exe
) hinweg funktionieren.
Weitere Informationen zu allen Authentifizierungsansätzen finden Sie unter Nutzen von Paketen aus authentifizierten Feeds.
Ermittlung des nuget.exe-Anmeldeinformationsanbieters
nuget.exe-Anmeldeinformationsanbieter können auf 3 Arten verwendet werden:
Global: Um einen Anmeldeinformationsanbieter für alle Instanzen von
nuget.exe
bereitzustellen, die unter dem Profil des aktuellen Benutzers ausgeführt werden, fügen Sie ihn%LocalAppData%\NuGet\CredentialProviders
hinzu. Möglicherweise müssen Sie den OrdnerCredentialProviders
erstellen. Anmeldeinformationsanbieter können im Stammverzeichnis des OrdnersCredentialProviders
oder innerhalb eines Unterordners installiert werden. Wenn ein Anmeldeinformationsanbieter über mehrere Dateien/Assemblys verfügt, können Sie Unterordner verwenden, um die Anbieter zu organisieren.Von einer Umgebungsvariable: Anmeldeinformationsanbieter können an einem beliebigen Speicherort gespeichert und für
nuget.exe
zugänglich gemacht werden, indem Sie die Umgebungsvariable%NUGET_CREDENTIALPROVIDERS_PATH%
auf den Speicherort des Anbieters festlegen. Bei dieser Variablen kann es sich um eine durch Semikolons getrennte Liste (z. B.path1;path2
) handeln, wenn mehrere Standorte vorhanden sind.Zusammen mit „nuget.exe“: nuget.exe"-Anmeldeinformationsanbieter können im gleichen Ordner wie
nuget.exe
gespeichert werden.
Beim Laden von Anmeldeinformationsanbietern durchsucht nuget.exe
die oben aufgeführten Speicherorte nacheinander nach Dateien mit dem Namen credentialprovider*.exe
und lädt diese Dateien dann in der Reihenfolge, in der sie gefunden wurden. Wenn sich mehrere Anmeldeinformationsanbieter im selben Ordner befinden, werden sie in alphabetischer Reihenfolge geladen.
Erstellen eines nuget.exe-Anmeldeinformationsanbieters
Ein Anmeldeinformationsanbieter ist eine ausführbare Befehlszeilendatei mit einem Namen im Format CredentialProvider*.exe
, die Eingaben erfasst, Anmeldeinformationen nach Bedarf abruft und dann den entsprechenden Beendigungsstatuscode und die Standardausgabe zurückgibt.
Als Anbieter müssen Sie wie folgt vorgehen:
- Ermitteln Sie, ob Sie Anmeldeinformationen für den Ziel-URI vor dem Initiieren des Abrufs der der Anmeldeinformationen bereitstellen können. Wenn dies nicht der Fall ist, sollte der Statuscode 1 ohne Anmeldeinformationen zurückgegeben werden.
- Ändern Sie
NuGet.Config
nicht (legen Sie dort z. B. keine Anmeldeinformationen fest). - Verwalten Sie die HTTP-Proxykonfiguration eigenständig, da NuGet keine Proxyinformationen für das Plug-In bereitstellt.
- Geben Sie Anmeldeinformationen oder Fehlerdetails an
nuget.exe
zurück, indem Sie ein JSON-Antwortobjekt (siehe unten) mit UTF-8-Codierung in stdout schreiben. - Geben Sie optional zusätzliche Ablaufverfolgungsprotokollierung an stderr aus. Geheimnisse sollten niemals in stderr geschrieben werden, da mit den Ausführlichkeitsstufen „normal“ oder „detailed“ (ausführlich) solche Ablaufverfolgungen von NuGet in der Konsole angezeigt werden.
- Unerwartete Parameter sollten ignoriert werden. Sie sorgen für Aufwärtskompatibilität mit zukünftigen Versionen von NuGet.
Eingabeparameter
Parameter/Switch | Beschreibung |
---|---|
Uri {Wert} | Der Paketquellen-URI, der Anmeldeinformationen erfordert. |
NonInteractive | Falls vorhanden, gibt der Anbieter keine interaktiven Eingabeaufforderungen aus. |
IsRetry | Gibt (wenn vorhanden) an, dass dieser Versuch ein Wiederholungsversuch eines zuvor fehlgeschlagenen Versuchs ist. Anbieter verwenden dieses Flag in der Regel, um sicherzustellen, dass alle vorhandenen Caches umgangen werden und nach Möglichkeit neue Anmeldeinformationen angefordert werden. |
Verbosity {Wert} | Einer der folgenden Werte (wenn vorhanden): „normal“, „quiet“ oder „detailed“. Wenn kein Wert angegeben wird, wird standardmäßig „normal“ verwendet. Anbieter sollten dies als Anzeichen für die Stufe der optionalen Protokollierung verwenden, die an den Standardfehlerstream ausgegeben werden soll. |
Exitcodes
Code | Ergebnis | Beschreibung |
---|---|---|
0 | Erfolgreich | Die Anmeldeinformationen wurden erfolgreich abgerufen und in stdout geschrieben. |
1 | ProviderNotApplicable | Der aktuelle Anbieter stellt keine Anmeldeinformationen für den angegebenen URI bereit. |
2 | Fehler | Der Anbieter ist der richtige Anbieter für den angegebenen URI, kann aber keine Anmeldeinformationen bereitstellen. In diesem Fall versucht „nuget.exe“ die Authentifizierung nicht erneut, und es tritt ein Fehler auf. Ein typisches Beispiel dafür ist, wenn ein Benutzer eine interaktive Anmeldung abbricht. |
Standardausgabe
Eigenschaft | Hinweise |
---|---|
Benutzername | Benutzername für authentifizierte Anforderungen. |
Kennwort | Kennwort für authentifizierte Anforderungen. |
`Message` | Optionale Details zur Antwort, die nur verwendet werden, um zusätzliche Details in Fehlerfällen anzuzeigen. |
stdout (Beispiel):
{ "Username" : "freddy@example.com",
"Password" : "bwm3bcx6txhprzmxhl2x63mdsul6grctazoomtdb6kfbof7m3a3z",
"Message" : "" }
Problembehandlung bei einem Anmeldeinformationsanbieter
Derzeit bietet NuGet keine direkte Unterstützung für das Debuggen von benutzerdefinierten Anmeldeinformationsanbietern. Issue 4598 verfolgt dies nach.
Sie können auch folgende Aktionen ausführen:
Führen Sie „nuget.exe“ mit dem Schalter
-verbosity
aus, um die ausführliche Ausgabe zu untersuchen.Fügen Sie
stdout
an geeigneten Stellen Debugmeldungen hinzu.Stellen Sie sicher, dass Sie „nuget.exe“ 3.3 oder höher verwenden.
Fügen Sie den Debugger beim Start mit diesem Codeausschnitt an:
while (!Debugger.IsAttached) { System.Threading.Thread.Sleep(100); } Debugger.Break();