다음을 통해 공유


NuGet 플랫폼 간 인증 플러그 인

버전 4.8 이상에서 모든 NuGet 클라이언트(NuGet.exe, Visual Studio, dotnet.exe 및 MSBuild.exe)는 NuGet 플랫폼 간 플러그 인 모델 위에 빌드된 인증 플러그 인을 사용할 수 있습니다.

dotnet.exe 인증

Visual Studio 및 NuGet.exe 기본적으로 대화형입니다. NuGet.exe 대화형이 아닌 스위치를 포함합니다. 또한 NuGet.exe 및 Visual Studio 플러그 인은 사용자에게 입력을 요청합니다. dotnet.exe 프롬프트가 없으며 기본값은 대화형이 아닙니다.

dotnet.exe 인증 메커니즘은 디바이스 흐름입니다. 복원 또는 패키지 추가 작업이 대화형으로 실행되면 사용자에게 인증을 완료하는 방법에 대한 작업 블록 및 지침이 명령줄에 제공됩니다. 사용자가 인증을 완료하면 작업이 계속됩니다.

작업을 대화형으로 만들려면 다음을 통과 --interactive해야 합니다. 현재 명시적 dotnet restoredotnet add package 명령만 대화형 스위치를 지원합니다. 대화형 스위치 dotnet build 가 켜져 있지 않습니다.dotnet publish

MSBuild의 인증

dotnet.exe 마찬가지로 MSBuild.exe 기본적으로 비대화형으로 MSBuild.exe 인증 메커니즘은 디바이스 흐름입니다. 복원이 일시 중지되고 인증을 기다리도록 하려면 .를 사용하여 복원 msbuild -t:restore -p:NuGetInteractive="true"을 호출합니다.

플랫폼 간 인증 플러그 인 만들기

샘플 구현은 Microsoft 자격 증명 공급자 플러그 인에서 찾을 수 있습니다.

플러그 인이 NuGet 클라이언트 도구에서 설정한 보안 요구 사항을 준수하는 것이 매우 중요합니다. 플러그 인이 인증 플러그 인이 되는 데 필요한 최소 버전은 2.0.0입니다. NuGet은 플러그 인을 사용하여 핸드셰이크를 수행하고 지원되는 작업 클레임에 대한 쿼리를 수행합니다. 특정 메시지에 대한 자세한 내용은 NuGet 플랫폼 간 플러그 인 프로토콜 메시지를 참조하세요.

NuGet은 로그 수준을 설정하고 해당하는 경우 플러그 인에 프록시 정보를 제공합니다. NuGet 콘솔에 대한 로깅은 NuGet이 로그 수준을 플러그 인으로 설정한 후에만 허용됩니다.

  • .NET Framework 플러그 인 인증 동작

.NET Framework에서 플러그 인은 사용자에게 대화 상자의 형태로 입력하라는 메시지를 표시할 수 있습니다.

  • .NET Core 플러그 인 인증 동작

.NET Core에서는 대화 상자를 표시할 수 없습니다. 플러그 인은 디바이스 흐름을 사용하여 인증해야 합니다. 플러그 인은 사용자에게 지침과 함께 NuGet에 로그 메시지를 보낼 수 있습니다. 로그 수준이 플러그 인으로 설정된 후에 로깅을 사용할 수 있습니다. NuGet은 명령줄에서 대화형 입력을 사용하지 않습니다.

클라이언트가 인증 자격 증명 가져오기를 사용하여 플러그 인을 호출하는 경우 플러그 인은 대화형 스위치를 준수하고 대화 상자 스위치를 준수해야 합니다.

다음 표에서는 모든 조합에 대해 플러그 인이 작동하는 방식을 요약합니다.

IsNonInteractive CanShowDialog 플러그 인 동작
true true IsNonInteractive 스위치가 대화 상자 스위치보다 우선합니다. 플러그 인에서 대화 상자를 표시할 수 없습니다. 이 조합은 .NET Framework 플러그 인에만 유효합니다.
true false IsNonInteractive 스위치가 대화 상자 스위치보다 우선합니다. 플러그 인을 차단할 수 없습니다. 이 조합은 .NET Core 플러그 인에만 유효합니다.
false true 플러그 인에 대화 상자가 표시됩니다. 이 조합은 .NET Framework 플러그 인에만 유효합니다.
false false 플러그 인에서 대화 상자를 표시할 수 없습니다. 플러그 인은 로거를 통해 명령 메시지를 로깅하여 인증하기 위해 디바이스 흐름을 사용해야 합니다. 이 조합은 .NET Core 플러그 인에만 유효합니다.

플러그 인을 작성하기 전에 다음 사양을 참조하세요.