Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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 pluginy NuGet.exe a Visual Studio vyzvou uživatele 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 se pozastaví a pokyny pro dokončení ověřování se zobrazí 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.
Na dotnet build a dotnet publish není žádný interaktivní přepínač.
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 umožnit obnovení pozastavit se a čekat na ověření, spusťte obnovení pomocí msbuild -t:restore -p:NuGetInteractive="true".
Vytvoření multiplatformního plug-inu 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 handshake s modulem plug-in a dotáže se na deklarace podporovaných operací. Další podrobnosti o konkrétních zprávách najdete v protokolových zprávách pluginu NuGet pro různé platformy.
NuGet nastaví úroveň protokolu a poskytne informace o proxy serveru pro plugin, pokud to bude relevantní. Protokolování do konzoly NuGet je přijatelné pouze po tom, co NuGet nastaví úroveň protokolu pro 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í pluginu .NET Core
V .NET Core nelze zobrazit dialogové okno. Pluginy by měly používat device flow k ověření. 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 dostupné až po nastavení úrovně protokolu na plugin. NuGet nebude z příkazového řádku přijímat žádný interaktivní vstup.
Když klient zavolá plug-in s příkazem Get Authentication Credentials, plug-iny 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 plugin |
|---|---|---|
| true | true | Přepínač IsNonInteractive má přednost před přepínačem dialogového okna. Plug-in nesmí blokovat. |
| true | false | Přepínač IsNonInteractive má přednost před přepínačem dialogového okna. Plug-in nesmí blokovat. |
| false | true | Modul plug-in může v případě potřeby zobrazit dialogové okno. Například interaktivní přihlášení nebo výběr účtu. |
| false | false | Modul plug-in by měl/nemůže zobrazit dialogové okno. Plug-in má použít tok zařízení k ověření tím, že zaznamená instrukční zprávu pomocí loggeru. |
Před NuGet 7.0 by NuGet vždy nastavil CanShowDialog hodnotu false v rozhraní příkazového řádku dotnet a true pro obnovení nástroje MSBuild.
Od verze 7.0 bude NuGet vždy nastaven CanShowDialog na hodnotu true, ale moduly plug-in by měly stále zjišťovat, kdy grafická rozhraní nejsou k dispozici.
Například při spuštění v Linuxu přes připojení SSH bez přesměrování X nebo při vzdálené relaci PowerShellu.
Před napsání modulu plug-in si projděte následující specifikace.