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.exe
는 credentialprovider*.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();