버전 3.3 에서 특정(v1) 자격 증명 공급자에 대한 nuget.exe 지원이 추가되었습니다. 그 이후로 모든 명령줄 시나리오(4.8, , nuget.exe)에서 작동하는 dotnet.exe 버전 msbuild.exe 지원이 추가되었습니다.
모든 인증 방법에 대한 자세한 내용은 인증된 피드에서 패키지 소비 를 참조하세요.
nuget.exe 자격 증명 공급자 검색
nuget.exe 자격 증명 공급자는 다음 세 가지 방법으로 사용할 수 있습니다.
전역적으로: 현재 사용자의 프로필에서 실행되는
nuget.exe모든 인스턴스에서 자격 증명 공급자를 사용할 수 있도록 하려면%LocalAppData%\NuGet\CredentialProviders에 자격 증명 공급자를 추가하십시오. 폴더CredentialProviders를 만들어야 할 수도 있습니다. 자격 증명 공급자는 폴더의CredentialProviders루트 또는 하위 폴더 내에 설치할 수 있습니다. 자격 증명 공급자에 여러 파일/어셈블리가 있는 경우 하위 폴더를 사용하여 공급자를 체계적으로 유지할 수 있습니다.환경 변수에서: 환경 변수를 공급자 위치로 설정
nuget.exe하여 자격 증명 공급자를%NUGET_CREDENTIALPROVIDERS_PATH%어디에나 저장하고 액세스할 수 있습니다. 이 변수는 여러 위치가 있는 경우 세미콜론으로 구분된 목록(예path1;path2: )일 수 있습니다.nuget.exe함께 : nuget.exe 자격 증명 공급자는 같은
nuget.exe폴더에 배치 할 수 있습니다.
자격 증명 공급자 nuget.exe 를 로드할 때 위의 위치를 순서대로 검색하여 이름이 지정된 credentialprovider*.exe파일을 찾은 순서대로 로드합니다. 동일한 폴더에 여러 자격 증명 공급자가 있는 경우 사전순으로 로드됩니다.
nuget.exe 자격 증명 공급자 만들기
자격 증명 공급자는 입력을 수집하고 자격 증명을 적절하게 획득한 다음 적절한 종료 상태 코드와 표준 출력을 반환하는 형식 CredentialProvider*.exe으로 명명된 명령줄 실행 파일입니다.
공급자는 다음을 수행해야 합니다.
- 자격 증명 획득을 시작하기 전에 대상 URI에 대한 자격 증명을 제공할 수 있는지 여부를 확인합니다. 그렇지 않은 경우 자격 증명 없이 상태 코드 1을 반환해야 합니다.
- 수정
NuGet.Config하지 마세요(예: 자격 증명 설정). - NuGet이 플러그 인에 프록시 정보를 제공하지 않으므로 HTTP 프록시 구성을 자체적으로 처리합니다.
- UTF-8 인코딩을 사용하여 stdout에
nuget.exeJSON 응답 개체(아래 참조)를 작성하여 자격 증명 또는 오류 세부 정보를 반환합니다. - 필요에 따라 stderr에 추가 추적 로깅을 내보낸다. 어떤 비밀도 stderr에 기록되어서는 안됩니다. NuGet이 "normal" 또는 "detailed" 상세 수준에서 이러한 추적을 콘솔에 출력하기 때문입니다.
- 예기치 않은 매개 변수를 무시하여 이후 버전의 NuGet과 호환성을 제공해야 합니다.
입력 매개 변수
| 매개 변수/스위치 | Description |
|---|---|
| Uri {value} | 자격 증명이 필요한 패키지 원본 URI입니다. |
| NonInteractive | 있는 경우 공급자는 대화형 프롬프트를 실행하지 않습니다. |
| IsRetry | 있는 경우 이 시도가 이전에 실패한 시도의 재시도임을 나타냅니다. 공급자는 일반적으로 이 플래그를 사용하여 기존 캐시를 우회하고 가능한 경우 새 자격 증명을 묻는 메시지를 표시합니다. |
| 자세한 정보 표시 {value} | 있는 경우 다음 값 중 하나입니다. "normal", "quiet" 또는 "detailed". 값이 제공되지 않으면 기본값은 "normal"입니다. 공급자는 이를 표준 오류 스트림으로 내보내는 선택적 로깅 수준을 나타내는 표시로 사용해야 합니다. |
종료 코드
| 코드 | 결과 | Description |
|---|---|---|
| 0 | 성공 | 자격 증명을 성공적으로 획득했으며 stdout에 기록되었습니다. |
| 1 | 사용자 미적용 | 현재 공급자는 지정된 URI에 대한 자격 증명을 제공하지 않습니다. |
| 2 | 실패 | 공급자는 지정된 URI에 대한 올바른 공급자이지만 자격 증명을 제공할 수 없습니다. 이 경우 nuget.exe 인증을 다시 시도하지 않고 실패합니다. 일반적인 예는 사용자가 대화형 로그인을 취소하는 경우입니다. |
표준 출력
| 재산 | 비고 |
|---|---|
| 사용자 이름 | 인증된 요청에 대한 사용자 이름입니다. |
| 암호 | 인증된 요청에 대한 암호입니다. |
| Message | 응답에 대한 선택적 세부 정보로, 실패 사례에서 추가 세부 정보를 표시하는 데만 사용됩니다. |
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();