Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In Version 4.8+ können alle NuGet-Clients (NuGet.exe, Visual Studio, dotnet.exe und MSBuild.exe) ein Authentifizierungs-Plug-In verwenden, das auf dem Plattformübergreifenden Plug-In-Modell von NuGet basiert.
Authentifizierung in dotnet.exe
Visual Studio und NuGet.exe sind standardmäßig interaktiv. NuGet.exe enthält einen Schalter, um ihn nicht interaktiv zu machen. Darüber hinaus fordern die plug-ins NuGet.exe und Visual Studio den Benutzer zur Eingabe auf. In dotnet.exe gibt es keine Eingabeaufforderung, und der Standardwert ist nicht interaktiv.
Der Authentifizierungsmechanismus in dotnet.exe ist der Gerätefluss. Wenn der Wiederherstellungs- oder Add-Paketvorgang interaktiv ausgeführt wird, werden die Vorgangsblöcke und Anweisungen für den Benutzer, wie die Authentifizierungen abgeschlossen werden, in der Befehlszeile bereitgestellt. Wenn der Benutzer die Authentifizierung abgeschlossen hat, wird der Vorgang fortgesetzt.
Um den Vorgang interaktiv zu machen, sollte --interactive übergeben werden.
Derzeit unterstützen nur die expliziten Befehle dotnet restore und dotnet add package ein interaktives Umschalten.
Es gibt keinen interaktiven Schalter auf dotnet build und dotnet publish.
Authentifizierung in MSBuild
Ähnlich wie dotnet.exe ist MSBuild.exe standardmäßig nicht interaktiv; der Authentifizierungsmechanismus von MSBuild.exe ist der Gerätefluss.
Um zuzulassen, dass der Wiederherstellungsprozess angehalten wird und auf die Authentifizierung wartet, verwenden Sie msbuild -t:restore -p:NuGetInteractive="true".
Erstellen eines plattformübergreifenden Authentifizierungs-Plug-Ins
Eine Beispielimplementierung finden Sie im Microsoft Credential Provider-Plug-In.
Es ist sehr wichtig, dass die Plug-Ins den Sicherheitsanforderungen entsprechen, die von den NuGet-Clienttools festgelegt werden. Die mindestens erforderliche Version für ein Plug-In als Authentifizierungs-Plug-In ist 2.0.0. NuGet führt den Handshake mit dem Plug-In und fragt nach den unterstützten Vorgangsansprüchen ab. Weitere Details zu den spezifischen Nachrichten finden Sie in den Protokollnachrichten des plattformübergreifenden NuGet-Plugins.
NuGet legt die Protokollebene fest und stellt ggf. Proxyinformationen für das Plug-In bereit. Die Protokollierung in der NuGet-Konsole ist nur akzeptabel, nachdem NuGet die Protokollebene für das Plug-In festgelegt hat.
- .NET Framework-Plug-In-Authentifizierungsverhalten
In .NET Framework dürfen die Plug-Ins einen Benutzer zur Eingabe in Form eines Dialogfelds auffordern.
- .NET Core-Plug-In-Authentifizierungsverhalten
In .NET Core kann kein Dialogfeld angezeigt werden. Die Plug-Ins sollten den Gerätefluss zur Authentifizierung verwenden. Das Plug-In kann Protokollnachrichten an NuGet mit Anweisungen an den Benutzer senden. Beachten Sie, dass die Protokollierung verfügbar ist, nachdem die Protokollebene auf das Plug-In festgelegt wurde. NuGet verwendet keine interaktiven Eingaben über die Befehlszeile.
Wenn der Client das Plug-In mit einem Get Authentication Credentials aufruft, müssen die Plug-Ins dem Interaktivitätsschalter entsprechen und den Dialogwechsel respektieren.
In der folgenden Tabelle wird das Verhalten des Plug-Ins für alle Kombinationen zusammengefasst.
| IsNonInteractive | CanShowDialog | Plug-In-Verhalten |
|---|---|---|
| Wahr | Wahr | Die IsNonInteractive-Option hat Vorrang vor dem Dialogwechsel. Das Plug-In darf nicht blockieren. |
| Wahr | Falsch | Die IsNonInteractive-Option hat Vorrang vor dem Dialogwechsel. Das Plug-In darf nicht blockieren. |
| Falsch | Wahr | Das Plug-In kann bei Bedarf ein Dialogfeld anzeigen. Beispiel: interaktive Anmeldung oder Kontoauswahl. |
| Falsch | Falsch | Das Plug-In sollte/kann kein Dialogfeld anzeigen. Das Plug-In sollte den Gerätefluss verwenden, um sich zu authentifizieren, indem eine Anweisungsmeldung über den Logger protokolliert wird. |
Vor NuGet 7.0 hat NuGet auf der dotnet CLI immer auf "falsch" und bei der MSBuild-Wiederherstellung auf "wahr" gesetzt CanShowDialog.
Ab Version 7.0 wird NuGet immer CanShowDialog auf "true" setzen, aber Plugins sollten weiterhin erkennen, wenn grafische Schnittstellen nicht verfügbar sind.
Wenn sie beispielsweise unter Linux über eine SSH-Verbindung ohne X-Weiterleitung oder eine PowerShell-Remotesitzung ausgeführt wird.
Bitte lesen Sie die folgenden Spezifikationen, bevor Sie ein Plug-In schreiben.