NuGet 자격 증명 공급자를 사용하여 Visual Studio에서 피드 인증
NuGet Visual Studio 확장 3.6 이상은 NuGet이 인증된 피드를 사용할 수 있도록 자격 증명 공급자를 지원합니다. Visual Studio용 NuGet 자격 증명 공급자를 설치한 후 NuGet Visual Studio 확장은 필요에 따라 인증된 피드에 대한 자격 증명을 자동으로 획득하고 새로 고칩니다.
샘플 구현은 VsCredentialProvider 샘플에서 찾을 수 있습니다.
Visual Studio 내에서 NuGet은 플러그 인 자격 증명 공급자를 검색하는 내부 VsCredentialProviderImporter
를 사용합니다. 이러한 플러그 인 자격 증명 공급자는 형식 IVsCredentialProvider
의 MEF 내보내기로 검색할 수 있어야 합니다.
Visual Studio에서 4.8+ NuGet부터는 새로운 플랫폼 간 인증 플러그 인도 지원하지만 성능상의 이유로 권장되는 방법은 아닙니다.
참고 항목
Visual Studio용 NuGet 자격 증명 공급자는 일반 Visual Studio 확장으로 설치해야 하며 Visual Studio 2017 이상이 필요합니다.
Visual Studio용 NuGet 자격 증명 공급자는 Visual Studio에서만 작동합니다(dotnet 복원 또는 nuget.exe 아님). nuget.exe 있는 자격 증명 공급자는 nuget.exe 자격 증명 공급자를 참조 하세요. dotnet 및 msbuild의 자격 증명 공급자는 NuGet 플랫폼 간 플러그 인을 참조 하세요.
Visual Studio용 NuGet 자격 증명 공급자 만들기
NuGet Visual Studio 확장 3.6 이상은 자격 증명을 획득하는 데 사용되는 내부 CredentialService를 구현합니다. CredentialService에는 기본 제공 및 플러그 인 자격 증명 공급자 목록이 있습니다. 각 공급자는 자격 증명을 획득할 때까지 순차적으로 시도됩니다.
자격 증명을 획득하는 동안 자격 증명 서비스는 자격 증명을 획득하는 즉시 중지되는 순서대로 자격 증명 공급자를 시도합니다.
- 자격 증명은 NuGet 구성 파일에서 가져옵니다(기본 제공
SettingsCredentialProvider
사용). - 패키지 원본이 Visual Studio Team Services
VisualStudioAccountProvider
에 있는 경우 사용됩니다. - 다른 모든 플러그 인 Visual Studio 자격 증명 공급자는 순차적으로 시도됩니다.
- 모든 NuGet 플랫폼 간 자격 증명 공급자를 순차적으로 사용하세요.
- 아직 자격 증명을 획득하지 않은 경우 표준 기본 인증 대화 상자를 사용하여 자격 증명을 입력하라는 메시지가 사용자에게 표시됩니다.
IVsCredentialProvider.GetCredentialsAsync 구현
Visual Studio용 NuGet 자격 증명 공급자를 만들려면 형식을 구현하는 IVsCredentialProvider
공용 MEF 내보내기를 노출하고 아래에 설명된 원칙을 준수하는 Visual Studio 확장을 만듭니다.
public interface IVsCredentialProvider
{
Task<ICredentials> GetCredentialsAsync(
Uri uri,
IWebProxy proxy,
bool isProxyRequest,
bool isRetry,
bool nonInteractive,
CancellationToken cancellationToken);
}
샘플 구현은 VsCredentialProvider 샘플에서 찾을 수 있습니다.
Visual Studio용 각 NuGet 자격 증명 공급자는 다음을 수행해야 합니다.
- 자격 증명 획득을 시작하기 전에 대상 URI에 대한 자격 증명을 제공할 수 있는지 여부를 확인합니다. 공급자가 대상 원본에 대한 자격 증명을 제공할 수 없는 경우 반환
null
해야 합니다. - 공급자가 대상 URI에 대한 요청을 처리하지만 자격 증명을 제공할 수 없는 경우 예외가 throw되어야 합니다.
Visual Studio용 사용자 지정 NuGet 자격 증명 공급자는 NuGet.VisualStudio 패키지에서 사용할 수 있는 인터페이스를 구현 IVsCredentialProvider
해야 합니다.
GetCredentialAsync
입력 매개 변수 | 설명 |
---|---|
Uri uri | 자격 증명이 요청되는 패키지 원본 URI입니다. |
IWebProxy 프록시 | 네트워크에서 통신할 때 사용할 웹 프록시입니다. 구성된 프록시 인증이 없으면 Null입니다. |
bool isProxyRequest | 이 요청이 프록시 인증 자격 증명을 가져오는 경우 True입니다. 구현이 프록시 자격 증명을 획득하는 데 유효하지 않은 경우 null을 반환해야 합니다. |
bool isRetry | True이면 이전에 이 URI에 대한 자격 증명이 요청되었지만 제공된 자격 증명에서 권한 있는 액세스를 허용하지 않았습니다. |
bool nonInteractive | true이면 자격 증명 공급자는 모든 사용자 프롬프트를 표시하지 않고 대신 기본값을 사용해야 합니다. |
CancellationToken cancellationToken | 자격 증명을 요청하는 작업이 취소되었는지 확인하려면 이 취소 토큰을 검사 합니다. |
반환 값: 인터페이스를 구현하는 자격 증명 개체입니다System.Net.ICredentials
.