Ověřování informačních kanálů v sadě Visual Studio pomocí poskytovatelů přihlašovacích údajů NuGet
Rozšíření Sady NuGet sady Visual Studio 3.6+ podporuje zprostředkovatele přihlašovacích údajů, které nuGet umožňují pracovat s ověřenými informačními kanály. Po instalaci zprostředkovatele přihlašovacích údajů NuGet pro Visual Studio rozšíření NuGet Visual Studio automaticky získá a aktualizuje přihlašovací údaje pro ověřené informační kanály podle potřeby.
Ukázkovou implementaci najdete v ukázce VsCredentialProvider.
NuGet v sadě Visual Studio používá interní VsCredentialProviderImporter
modul, který také vyhledá zprostředkovatele přihlašovacích údajů modulu plug-in. Tito poskytovatelé přihlašovacích údajů modulu plug-in musí být zjistitelné jako export typu IVsCredentialProvider
MEF .
Počínaje 4.8+ NuGet v sadě Visual Studio podporuje také nové moduly plug-in pro více platforem, ale z důvodů výkonu se nedoporučují.
Poznámka:
Poskytovatelé přihlašovacích údajů NuGet pro Visual Studio musí být nainstalováni jako běžné rozšíření sady Visual Studio a budou vyžadovat Visual Studio 2017 nebo vyšší.
Zprostředkovatelé přihlašovacích údajů NuGet pro Visual Studio fungují jenom v sadě Visual Studio (ne v obnovení dotnet nebo nuget.exe). Informace o zprostředkovateli přihlašovacích údajů s nuget.exe najdete v tématu nuget.exe Zprostředkovatelé přihlašovacích údajů. Informace o zprostředkovatelích přihlašovacích údajů v dotnetu a msbuildu najdete v modulech plug-in NuGet pro různé platformy.
Vytvoření zprostředkovatele přihlašovacích údajů NuGet pro Visual Studio
Rozšíření Sady NuGet visual Studio 3.6+ implementuje interní službu CredentialService, která se používá k získání přihlašovacích údajů. CredentialService obsahuje seznam integrovaných poskytovatelů přihlašovacích údajů a zprostředkovatelů přihlašovacích údajů modulu plug-in. Každý zprostředkovatel se pokouší postupně, dokud se nezíská přihlašovací údaje.
Během získávání přihlašovacích údajů služba přihlašovacích údajů vyzkouší zprostředkovatele přihlašovacích údajů v následujícím pořadí a po získání přihlašovacích údajů se zastaví:
- Přihlašovací údaje se načtou z konfiguračních souborů NuGet (pomocí integrovaného
SettingsCredentialProvider
). - Pokud je zdroj balíčku v sadě Visual Studio Team Services,
VisualStudioAccountProvider
použije se. - Všichni ostatní poskytovatelé přihlašovacích údajů modulu plug-in sady Visual Studio se budou postupně zkoušit.
- Zkuste postupně používat všechny zprostředkovatele přihlašovacích údajů NuGet pro různé platformy.
- Pokud ještě nebyly získány žádné přihlašovací údaje, zobrazí se uživateli výzva k zadání přihlašovacích údajů pomocí standardního dialogového okna základního ověřování.
Implementace IVsCredentialProvider.GetCredentialsAsync
Pokud chcete vytvořit zprostředkovatele přihlašovacích údajů NuGet pro Visual Studio, vytvořte rozšíření sady Visual Studio, které zveřejňuje veřejný export MEF implementující IVsCredentialProvider
typ a dodržuje následující principy.
public interface IVsCredentialProvider
{
Task<ICredentials> GetCredentialsAsync(
Uri uri,
IWebProxy proxy,
bool isProxyRequest,
bool isRetry,
bool nonInteractive,
CancellationToken cancellationToken);
}
Ukázkovou implementaci najdete v ukázce VsCredentialProvider.
Každý poskytovatel přihlašovacích údajů NuGet pro Visual Studio musí:
- Určete, jestli může před zahájením získání přihlašovacích údajů zadat přihlašovací údaje pro cílový identifikátor URI. Pokud poskytovatel nemůže zadat přihlašovací údaje pro cílový zdroj, měl by vrátit
null
. - Pokud poskytovatel zpracovává požadavky na cílový identifikátor URI, ale nemůže zadat přihlašovací údaje, měla by se vyvolat výjimka.
Vlastní zprostředkovatel přihlašovacích údajů NuGet pro Visual Studio musí implementovat IVsCredentialProvider
rozhraní dostupné v balíčku NuGet.VisualStudio.
GetCredentialAsync
Vstupní parametr | Popis |
---|---|
Identifikátor URI | Identifikátor URI zdroje balíčku, pro který se požadují přihlašovací údaje. |
Proxy server IWebProxy | Webový proxy server, který se má použít při komunikaci v síti. Hodnota null, pokud není nakonfigurované žádné ověřování proxy serveru. |
bool isProxyRequest | Hodnota True, pokud má tento požadavek získat přihlašovací údaje pro ověření proxy serveru. Pokud implementace není platná pro získání přihlašovacích údajů proxy serveru, měla by se vrátit hodnota null. |
bool isRetry | True, pokud byly přihlašovací údaje dříve požadovány pro tento identifikátor URI, ale zadané přihlašovací údaje nepovolily autorizovaný přístup. |
bool nonInteractive | Pokud je hodnota true, musí poskytovatel přihlašovacích údajů potlačit všechny výzvy uživatele a místo toho použít výchozí hodnoty. |
CancellationToken cancellationToken | Tento token zrušení by se měl zkontrolovat a zjistit, jestli byla operace požadující přihlašovací údaje zrušena. |
Návratová hodnota: Objekt přihlašovacích údajů implementuje System.Net.ICredentials
rozhraní.