Sdílet prostřednictvím


Víceplatformní ověřovací moduly plug-in NuGet

Ve verzi 4.8 nebo novější můžou všichni klienti NuGet (NuGet.exe, Visual Studio, dotnet.exe a MSBuild.exe) používat ověřovací modul plug-in založený na modelu modulů plug-in pro různé platformy NuGet.

Ověřování v dotnet.exe

Visual Studio a NuGet.exe jsou ve výchozím nastavení interaktivní. NuGet.exe obsahuje přepínač, aby byl neinteraktivní. Kromě toho moduly plug-in NuGet.exe a sady Visual Studio uživatele vyzve k zadání vstupu. V dotnet.exe se nezobrazí výzva a výchozí hodnota není interaktivní.

Ověřovací mechanismus v dotnet.exe je tok zařízení. Když se operace obnovení nebo přidání balíčku spustí interaktivně, operace zablokuje uživatele a pokyny, jak dokončit ověřování, se zadají na příkazovém řádku. Jakmile uživatel dokončí ověření, operace bude pokračovat.

Aby byla operace interaktivní, měla by projít --interactive. V současné době podporují interaktivní přepínač pouze explicitní dotnet restore příkazy a dotnet add package příkazy. Není zapnut dotnet build žádný interaktivní přepínač a dotnet publish.

Ověřování v nástroji MSBuild

Podobně jako u dotnet.exe je MSBuild.exe ve výchozím nastavení neinteraktivní mechanismus ověřování MSBuild.exe je tok zařízení. Chcete-li povolit obnovení pozastavit a čekat na ověření, volání obnovení pomocí msbuild -t:restore -p:NuGetInteractive="true".

Vytvoření modulu plug-in pro více platforem pro ověřování

Ukázkovou implementaci najdete v modulu plug-in Microsoft Credential Provider.

Je velmi důležité, aby moduly plug-in odpovídaly požadavkům zabezpečení stanoveným klientskými nástroji NuGet. Minimální požadovaná verze modulu plug-in pro ověřování je 2.0.0. NuGet provede metodu handshake s modulem plug-in a dotazem na podporované deklarace identity operací. Další podrobnosti o konkrétních zprávách najdete v protokolech modulů plug-in NuGet pro různé platformy.

NuGet nastaví úroveň protokolu a poskytne informace o proxy serveru modulu plug-in, pokud je k dispozici. Protokolování do konzoly NuGet je přijatelné pouze po nastavení úrovně protokolu na modul plug-in.

  • Chování při ověřování modulu plug-in rozhraní .NET Framework

V rozhraní .NET Framework mohou moduly plug-in vyzvat uživatele k zadání vstupu ve formě dialogového okna.

  • Chování ověřování modulů plug-in .NET Core

V .NET Core nelze zobrazit dialogové okno. Moduly plug-in by měly k ověření používat tok zařízení. Modul plug-in může odesílat zprávy protokolu do NuGetu s pokyny pro uživatele. Všimněte si, že protokolování je k dispozici po nastavení úrovně protokolu na modul plug-in. NuGet nebude z příkazového řádku přijímat žádný interaktivní vstup.

Když klient zavolá modul plug-in s get Authentication Credentials, moduly plug-in musí odpovídat přepínači interaktivity a respektovat přepínač dialogového okna.

Následující tabulka shrnuje chování modulu plug-in pro všechny kombinace.

IsNonInteractive CanShowDialog Chování modulu plug-in
true true Přepínač IsNonInteractive má přednost před přepínačem dialogového okna. Modul plug-in nemůže otevřít dialogové okno. Tato kombinace je platná pouze pro moduly plug-in rozhraní .NET Framework.
true false (nepravda) Přepínač IsNonInteractive má přednost před přepínačem dialogového okna. Modul plug-in nemůže blokovat. Tato kombinace je platná pouze pro moduly plug-in .NET Core.
false (nepravda) true Modul plug-in by měl zobrazit dialogové okno. Tato kombinace je platná pouze pro moduly plug-in rozhraní .NET Framework.
false (nepravda) false (nepravda) Modul plug-in by měl/nemůže zobrazit dialogové okno. Modul plug-in by měl použít tok zařízení k ověření protokolováním instrukční zprávy prostřednictvím protokolovacího nástroje. Tato kombinace je platná pouze pro moduly plug-in .NET Core.

Před napsání modulu plug-in si projděte následující specifikace.