Megosztás a következőn keresztül:


Platformfüggetlen NuGet hitelesítési beépülő modul

A 4.8-as verzióban minden NuGet-ügyfél (NuGet.exe, Visual Studio, dotnet.exe és MSBuild.exe) használhat egy hitelesítési beépülő modult, amely a NuGet platformfüggetlen beépülő moduljaira épül.

A dotnet.exe hitelesítése

A Visual Studio és a NuGet.exe alapértelmezés szerint interaktívak. NuGet.exe tartalmaz egy kapcsolót, amely nem interaktívvá teszi. Emellett a NuGet.exe és a Visual Studio beépülő moduljai kérik a felhasználót a bemenetre. A dotnet.exe esetében nincs kérés, és az alapértelmezett beállítás nem interaktív.

A dotnet.exe hitelesítési mechanizmusa az eszközfolyam. Ha a visszaállítási vagy csomagbeadási művelet interaktívan fut, a műveletblokkok és a felhasználónak a hitelesítés befejezésére vonatkozó utasítások a parancssorban lesznek megadva. Amikor a felhasználó befejezi a hitelesítést, a művelet folytatódik.

Ahhoz, hogy a művelet interaktív legyen, át kell adni --interactive. Jelenleg csak az explicit dotnet restore és dotnet add package a parancsok támogatják az interaktív kapcsolót. Nincs interaktív kapcsoló a dotnet build és dotnet publish elemen.

Hitelesítés az MSBuildben

A dotnet.exe-hez hasonlóan a MSBuild.exe alapértelmezés szerint nem interaktív, a MSBuild.exe hitelesítési mechanizmus az eszközfolyamat. Ha engedélyezni szeretné, hogy a visszaállítás szüneteljen, és várja meg a hitelesítést, hívja meg a visszaállítást a következővel msbuild -t:restore -p:NuGetInteractive="true": .

Keresztplatformos hitelesítési beépülő modul létrehozása

Minta implementáció a Microsoft Hitelesítőadat-szolgáltató beépülő modulban található.

Nagyon fontos, hogy a beépülő modulok megfeleljenek a NuGet-ügyféleszközök által meghatározott biztonsági követelményeknek. A hitelesítés beépülő modul minimálisan szükséges verziója a 2.0.0. A NuGet elvégzi a kézfogást a beépülő modullal, és lekérdezi a támogatott műveleti jogcímeket. Az adott üzenetekkel kapcsolatos további részletekért tekintse meg a NuGet platformfüggetlen beépülő modulprotokoll-üzenetét .

A NuGet beállítja a naplószintet, és adott esetben proxyadatokat ad meg a beépülő modulnak. A NuGet-konzolra való naplózás csak akkor elfogadható, ha a NuGet beállította a naplószintet a beépülő modulra.

  • .NET-keretrendszer beépülő modul hitelesítési viselkedése

A .NET-keretrendszerben a beépülő modulok párbeszédpanel formájában kérhetik a felhasználótól a bemenetet.

  • .NET Core beépülő modul hitelesítési viselkedése

A .NET Core-ban nem jeleníthető meg párbeszédpanel. A beépülő moduloknak az eszközfolyamatot kell használniuk a hitelesítéshez. A beépülő modul képes naplóüzeneteket küldeni a NuGetnek a felhasználónak küldött utasítások segítségével. Vegye figyelembe, hogy a naplózás elérhetővé válik, miután a naplószintet beállították a beépülő modulban. A NuGet nem fogad interaktív bemenetet a parancssorból.

Amikor az ügyfél hitelesítési adatok lekérésére hívja meg a beépülő modult, a moduloknak meg kell felelniük az interaktivitási kapcsolónak és tiszteletben kell tartaniuk a párbeszédpanel kapcsolót.

Az alábbi táblázat összefoglalja, hogyan kell viselkednie a beépülő modulnak az összes kombinációhoz.

NemInteraktívE CanShowDialog Beépülő modul viselkedése
true true Az IsNonInteractive kapcsoló elsőbbséget élvez a párbeszédpanel-kapcsolóval szemben. A beépülő modulnak nem szabad blokkolnia.
true false Az IsNonInteractive kapcsoló elsőbbséget élvez a párbeszédpanel-kapcsolóval szemben. A beépülő modulnak nem szabad blokkolnia.
false true A beépülő modul szükség esetén megjeleníthet egy párbeszédpanelt. Például interaktív bejelentkezés vagy fiókválasztás.
false false A beépülő modul nem jeleníthet meg párbeszédpanelt. A beépülő modulnak az eszközfolyamatot kell használnia a hitelesítéshez egy utasításüzenet naplózásával a naplózón keresztül.

A NuGet 7.0 előtt a NuGet mindig hamis értékre állította CanShowDialog a dotnet CLI-n, és igazra az MSBuild visszaállításnál. 7.0-s verziótól kezdve a NuGet mindig igaz értékre lesz állítva CanShowDialog, de a beépülő moduloknak továbbra is észlelniük kell, ha a grafikus felületek nem állnak rendelkezésre. Például ha Linuxon X továbbítás nélküli SSH-kapcsolaton vagy Távoli PowerShell-munkameneten fut.

A beépülő modul írása előtt tekintse meg az alábbi specifikációkat.