다음을 통해 공유


nuget.exe 자격 증명 공급자를 사용하여 피드 인증

버전 3.3 에서 특정(v1) 자격 증명 공급자에 대한 nuget.exe 지원이 추가되었습니다. 그 이후로 모든 명령줄 시나리오(nuget.exe, dotnet.exe, msbuild.exe)에서 작동하는 (v2) 자격 증명 공급자에 대한 버전 4.8 지원이 추가되었습니다.

모든 인증 방법에 대한 자세한 내용은 인증된 피드에서 패키지 소비를 참조하세요.

nuget.exe 자격 증명 공급자 검색

다음 세 가지 방법으로 nuget.exe 자격 증명 공급자를 사용할 수 있습니다.

  • 전역적으로: 자격 증명 공급자를 nuget.exe의 모든 인스턴스에 사용 가능하도록 만들려면 현재 사용자의 프로필에서 실행하고 %LocalAppData%\NuGet\CredentialProviders에 추가합니다. CredentialProviders 폴더를 만들어야 할 수도 있습니다. 자격 증명 공급자는 폴더의 CredentialProviders 루트 또는 하위 폴더 내에 설치할 수 있습니다. 자격 증명 공급자에 여러 파일/어셈블리가 있는 경우 하위 폴더를 사용하여 공급자를 구성된 상태로 유지할 수 있습니다.

  • 환경 변수에서: 환경 변수를 공급자 위치로 설정 %NUGET_CREDENTIALPROVIDERS_PATH% 하여 자격 증명 공급자를 nuget.exe 어디에나 저장하고 액세스할 수 있습니다. 여러 위치가 있는 경우 이 변수는 세미콜론으로 구분된 목록(예: path1;path2)이 될 수 있습니다.

  • nuget.exe와 함께: nuget.exe 자격 증명 공급자는 nuget.exe와 같은 폴더에 있을 수 있습니다.

자격 증명 공급자를 로드할 때 nuget.execredentialprovider*.exe라는 이름의 모든 파일에 대해 위 위치를 순서대로 검색한 다음, 찾은 순서로 해당 파일을 로드합니다. 동일한 폴더에 여러 자격 증명 공급자가 있는 경우 알파벳 순서로 로드됩니다.

nuget.exe 자격 증명 공급자 만들기

자격 증명 공급자는 CredentialProvider*.exe 형식으로 이름이 지정된 명령줄 실행 파일로, 입력을 수집하고, 적절한 자격 증명을 얻은 다음, 적절한 종료 상태 코드와 표준 출력을 반환합니다.

공급자는 다음을 수행해야 합니다.

  • 자격 증명 획득을 시작하기 전에 대상 URI에 대한 자격 증명을 제공할 수 있는지 여부를 확인합니다. 그렇지 않으면 자격 증명 없이 상태 코드 1을 반환해야 합니다.
  • NuGet.Config를 수정하지 마세요(예: 해당 위치의 자격 증명 설정).
  • NuGet은 플러그 인에 프록시 정보를 제공하지 않으므로 자체적으로 HTTP 프록시 구성을 처리합니다.
  • UTF-8 인코딩을 사용하여 JSON 응답 개체(아래 참조)를 stdout에 기록하여 자격 증명 또는 오류 세부 정보를 nuget.exe에 반환합니다.
  • 필요에 따라 stderr로 추가 추적 로깅을 내보냅니다. 세부 정보 표시 수준이 “보통” 또는 “자세히”인 경우에는 NuGet에 의해 콘솔에 그러한 추적이 표시되기 때문에 stderr에는 비밀이 기록되지 않습니다.
  • 이후 버전의 NuGet과의 호환성을 제공하여 예기치 않은 매개 변수를 무시해야 합니다.

입력 매개 변수

매개 변수/스위치 설명
URI {value} 자격 증명을 요구하는 패키지 원본 URI입니다.
NonInteractive 있는 경우 공급자는 대화형 프롬프트를 생성하지 않습니다.
IsRetry 있는 경우 이 시도는 이전에 실패한 시도의 재시도임을 나타냅니다. 일반적으로 공급자는 이 플래그를 사용하여 기존 캐시를 무시하고 가능한 경우 새 자격 증명을 묻는 메시지를 표시합니다.
Verbosity {value} 있는 경우 “보통”, “자동”, “자세히” 중 하나입니다. 값을 지정하지 않으면 기본값은 “보통”입니다. 공급자는 표준 오류 스트림으로 내보낼 선택적 로깅 수준에 대한 표시로 이를 사용해야 합니다.

종료 코드

코드 결과 설명
0 성공 자격 증명을 성공적으로 획득하고 stdout에 기록했습니다.
1 ProviderNotApplicable 현재 공급자가 지정된 URI에 대한 자격 증명을 제공하지 않습니다.
2 Failure 공급자는 지정된 URI에 대한 올바른 공급자이지만 자격 증명을 제공할 수 없습니다. 이 경우 nuget.exe는 인증을 다시 시도하지 않고 실패합니다. 일반적인 예로 사용자가 대화형 로그인을 취소하는 경우가 있습니다.

표준 출력

속성 주의
사용자 이름 인증된 요청에 대한 사용자 이름입니다.
암호 인증된 요청에 대한 암호입니다.
메시지 실패 사례에 추가 세부 정보를 표시하는 데에만 사용되는 응답에 대한 선택적 세부 정보입니다.

예 stdout:

{ "Username" : "freddy@example.com",
    "Password" : "bwm3bcx6txhprzmxhl2x63mdsul6grctazoomtdb6kfbof7m3a3z",
    "Message"  : "" }

자격 증명 공급자 문제 해결

현재 NuGet은 사용자 지정 자격 증명 공급자 디버깅에 대한 직접적인 지원을 많이 제공하지 않습니다. 문제 4598이 작업을 추적하고 있습니다.

다음 방법을 수행할 수도 있습니다.

  • -verbosity 스위치를 사용하여 nuget.exe를 실행하여 자세한 출력을 검사합니다.

  • 적절한 위치의 stdout에 디버그 메시지를 추가합니다.

  • nuget.exe 3.3 이상을 사용해야 합니다.

  • 시작 시 다음 코드 조각으로 디버거를 연결합니다.

    while (!Debugger.IsAttached)
    {
        System.Threading.Thread.Sleep(100);
    }
    Debugger.Break();