Authentification des flux dans Visual Studio avec des fournisseurs d’informations d’identification NuGet
NuGet Visual Studio Extension 3.6+ prend en charge les fournisseurs d’informations d’identification, qui permettent à NuGet d’utiliser des flux authentifiés. Après avoir installé un fournisseur d’informations d’identification NuGet pour Visual Studio, l’extension NuGet Visual Studio acquiert et actualise automatiquement les identifiants des flux authentifiés si nécessaire.
Vous trouverez un échantillon d’implémentation dans l’échantillon VsCredentialProvider.
Dans Visual Studio, NuGet utilise un élément VsCredentialProviderImporter
interne qui analyse également les fournisseurs d’informations d’identification de plug-in. Ces fournisseurs d’informations d’identification de plug-in doivent être détectables en tant qu’exportation MEF de type IVsCredentialProvider
.
À compter de la version 4.8+, NuGet dans Visual Studio prend également en charge les nouveaux plug-ins d’authentification multiplateforme, mais ils ne constituent pas l’approche recommandée pour des raisons de performances.
Remarque
Les fournisseurs d’informations d’identification NuGet pour Visual Studio doivent être installés en tant qu’extension Visual Studio standard et nécessiteront Visual Studio 2017 ou une version ultérieure.
Les fournisseurs d’informations d’identification NuGet pour Visual Studio fonctionnent uniquement dans Visual Studio (non dans dotnet restore ou dans nuget.exe). Pour connaître les fournisseurs d’informations d’identification avec nuget.exe, consultez la rubrique sur les fournisseurs d’informations d’identification nuget.exe. Pour les fournisseurs d’informations d’identification dans dotnet et msbuild, consultez la rubrique sur les plug-ins multiplateformes NuGet
Création d’un fournisseur d’informations d’identification NuGet pour Visual Studio
NuGet Visual Studio Extension 3.6+ implémente un CredentialService interne utilisé pour acquérir des identifiants. CredentialService contient une liste de fournisseurs d’informations d’identification prédéfinis et plug-in. Chaque fournisseur est essayé séquentiellement jusqu’à ce que les identifiants soient acquis.
Lors de l’acquisition des identifiants, le service d’informations d’identification essaiera les fournisseurs d’informations d’identification dans l’ordre suivant, en s’arrêtant dès que les identifiants seront acquis :
- Les identifiants sont extraits des fichiers de configuration NuGet (à l’aide de l’élément
SettingsCredentialProvider
prédéfini). - Si la source du package se trouve sur Visual Studio Team Services, l’élément
VisualStudioAccountProvider
est utilisé. - Tous les autres fournisseurs d’informations d’identification Visual Studio de plug-in seront essayés de manière séquentielle.
- Essayez d’utiliser tous les fournisseurs d’informations d’identification multiplateformes NtuGet de manière séquentielle.
- Si aucun identifiant n’a encore été acquis, l’utilisateur est invité à entrer des informations d’identification à l’aide d’une boîte de dialogue d’authentification de base standard.
Implémentation d’IVsCredentialProvider.GetCredentialsAsync
Pour créer un fournisseur d’informations d’identification NuGet pour Visual Studio, créez une extension Visual Studio qui expose une exportation MEF publique qui implémente le type IVsCredentialProvider
et respecte les principes décrits ci-dessous.
public interface IVsCredentialProvider
{
Task<ICredentials> GetCredentialsAsync(
Uri uri,
IWebProxy proxy,
bool isProxyRequest,
bool isRetry,
bool nonInteractive,
CancellationToken cancellationToken);
}
Vous trouverez un échantillon d’implémentation dans l’échantillon VsCredentialProvider.
Chaque fournisseur d’informations d’identification NuGet pour Visual Studio doit :
- Déterminer s’il peut fournir des identifiants pour l’URI ciblé avant de lancer l’acquisition d’informations d’identification. Si le fournisseur ne peut pas fournir d’identifiants pour la source ciblée, il doit renvoyer
null
. - Si le fournisseur gère les demandes pour l’URI ciblé, mais ne peut pas fournir d’identifiants, une exception doit être émise.
Un fournisseur d’informations d’identification NuGet personnalisé pour Visual Studio doit implémenter l’interface IVsCredentialProvider
disponible dans le package NuGet.VisualStudio.
GetCredentialAsync
Paramètre d’entrée | Description |
---|---|
Uri d’URI | URI source du package pour lequel des identifiants sont demandés. |
Proxy IWebProxy | Proxy web à utiliser lors de la communication sur le réseau. Nul s’il n’existe aucune authentification du proxy configurée. |
bool isProxyRequest | True si cette requête consiste à obtenir les identifiants d’authentification du proxy. Si l’implémentation n’est pas valide pour l’acquisition d’identifiants du proxy, la valeur nulle doit être renvoyée. |
bool isRetry | True si des identifiants ont été demandés précédemment pour cet URI, mais si les identifiants fournis n’ont pas autorisé l’accès. |
bool nonInteractive | Si la valeur est true, le fournisseur d’informations d’identification doit masquer toutes les invites utilisateur et utiliser des valeurs par défaut à la place. |
CancellationToken cancellationToken | Ce jeton d’annulation doit être vérifié pour déterminer si l’opération demandant des identifiants a été annulée. |
Valeur de retour : objet d’identifiants implémentant l’interface System.Net.ICredentials
.