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.