다음을 통해 공유


인증(BITS)

BITS는 기본 인증, Passport 인증 및 여러 챌린지/응답 인증 체계를 지원합니다. 서버 또는 프록시에 사용자 인증이 필요한 경우 IBackgroundCopyJob2::SetCredentials 함수를 사용하여 사용자의 자격 증명을 지정합니다. BITS는 CryptoAPI 를 사용하여 자격 증명을 보호합니다.

기본 인증에 대한 자격 증명을 설정하려면 SetCredentials 함수를 사용하여 사용자 이름과 암호를 지정합니다. https:// 보호된 보안 웹 사이트에서만 기본 인증을 사용해야 합니다. 그렇지 않으면 사용자 이름과 암호가 사용자에게 표시됩니다.

URL에 사용자 이름과 암호를 포함할 수 있습니다. 이는 좋은 보안 사례로 간주되지 않으며 RFC 3986(섹션 3.2.1)에서 더 이상 사용되지 않습니다.

Passport 인증의 경우 BITS는 계정에 연결된 암시적 자격 증명이 아닌 명시적 자격 증명만 지원합니다.

챌린지/응답 인증의 경우 BITS는 사용자를 가장하고 Snego 를 사용하여 NTLM 또는 Kerberos 프로토콜과 같이 사용할 챌린지/응답 인증을 결정합니다. BITS에서 지원하는 챌린지/응답 체계 목록은 BG_AUTH_SCHEME 참조하세요.

서버의 가상 디렉터리에 익명 인증 및 다른 인증 체계가 활성화되어 있고 ACL이 가상 디렉터리를 보호하거나 파일을 다운로드하는 경우 BITS 작업이 실패할 수 있습니다. 예를 들어 가상 디렉터리에 익명 및 통합 인증이 사용하도록 설정되어 있고 파일에 Ben만 파일을 읽을 수 있는 ACL이 포함된 경우 작업이 "액세스 거부됨"으로 실패합니다. 이 문제는 가상 디렉터리가 익명 액세스를 허용하므로 IIS가 Ben을 명시적으로 인증하지 않기 때문에 발생합니다(Ben의 자격 증명은 파일에 액세스하는 데 사용되지 않으며 액세스가 거부됨).

암시적 자격 증명 사용

NTLM 또는 Kerberos 인증에 사용자의 암시적(로그온) 자격 증명을 사용하려면 IBackgroundCopyJob2::SetCredentials 메서드를 호출하고 BG_BASIC_CREDENTIALS 구조의 UserName암호 멤버를 NULL로 설정합니다. 프록시에 암시적 자격 증명을 지정하는 경우 명시적 서버 자격 증명을 지정하지 않는 한 BITS는 서버 인증에 암시적 자격 증명도 사용합니다.

서비스에 대한 자세한 내용은 서비스 계정 및 BITS를 참조하세요.

LMCompatibilityLevel 또는 UseLMCompat 레지스트리 값을 변경할 수도 있습니다. 그러나 SetCredentials 메서드를 호출하도록 변경할 수 없는 기존 애플리케이션이 있는 경우에만 이러한 값을 변경해야 합니다.

LMCompatibilityLevel 레지스트리 값이 2 이상이고 SetCredentials 메서드를 호출하지 않은 경우 BITS는 인증에 암시적 자격 증명을 사용합니다. LMCompatibilityLevel 레지스트리 값의 전체 경로는System\CurrentControlSet\Control\LSA\LmCompatibilityLevel을HKEY_LOCAL_MACHINE\.

LMCompatibilityLevel 레지스트리 값을 변경하면 컴퓨터에서 실행되는 다른 애플리케이션 및 서비스에 영향을 줄 수 있습니다.

LMCompatibilityLevel 레지스트리 값을 설정하는 것이 문제가 되는 경우 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\BITS에서 UseLMCompat 레지스트리 값을 만들 수 있습니다. 레지스트리 값은 DWORD입니다. 다음 표에서는 UseLMCompat에 대한 가능한 값을 나열합니다.

설명
0 BITS는 서버가 NTLM 또는 Kerberos 자격 증명을 묻는 메시지를 표시할 때마다 암시적 자격 증명을 보냅니다.
1 BITS는 클라이언트 컴퓨터의 LMCompatibilityLevel 레지스트리 값이 2보다 크거나 같은 경우에만 암시적 자격 증명을 보냅니다.
2 BITS는 애플리케이션이 SetCredentials 메서드를 호출한 경우에만 암시적 자격 증명을 보냅니다.

BITS는 레지스트리 값이 없는 경우 UseLMCompat 레지스트리 값에 대해 기본값 "2"를 사용합니다.

클라이언트/서버 인증에 인증서 사용

보안 클라이언트/서버 통신에서 클라이언트와 서버는 디지털 인증서를 사용하여 상호 인증할 수 있습니다. BITS는 보안 HTTP 전송을 위한 인증서 기반 서버 인증을 자동으로 지원합니다. 상호 인증에 필요한 클라이언트 인증서를 BITS에 제공하려면 IBackgroundCopyJobHttpOptions::SetClientCertificateByID 또는 IBackgroundCopyJobHttpOptions::SetClientCertificateByName 메서드를 호출합니다.

웹 사이트에서 SSL 클라이언트 인증서를 수락하지만 필요하지 않고 BITS 작업이 클라이언트 인증서를 지정하지 않으면 ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED(0x80072f0c )으로 작업이 실패합니다.

사용자별 설정이 필요한 인증된 프록시 시나리오를 처리하는 방법

컴퓨터의 네트워크 도메인에서 사용 가능한 NTLM 또는 Kerberos 자격 증명 없이 계정으로 실행하는 동안 프록시 인증이 필요한 환경에서 BITS를 사용하는 경우 도메인에 자격 증명이 있는 다른 사용자 계정의 자격 증명을 사용하여 제대로 인증하는 추가 단계를 수행해야 합니다. 이는 BITS 코드가 LocalService, NetworkService 또는 LocalSystem과 같은 시스템 서비스로 실행되는 일반적인 시나리오입니다. 이러한 계정에는 사용 가능한 NTLM 또는 Kerberos 자격 증명이 없기 때문이다.

BITS에 사용되는 프록시 검색 논리는 네트워크 도우미 토큰(BG_TOKEN_NETWORK)이 설정된 경우 다음을 수행합니다.

  • IBackgroundCopyJob::SetProxySettingsBG_JOB_PROXY_USAGE_PRECONFIG 호출된 경우 WinHttpGetIEProxyConfigForCurrentUser를 통해 작업 소유자 토큰 컨텍스트 가장을 사용하여 로컬 IE 프록시 설정을 읽습니다. Windows 10, 버전 1809(10.0; 빌드 17763), 도우미 토큰 ID가 이 단계에 사용됩니다.
  • IBackgroundCopyJob::SetProxySettingsBG_PROXY_USAGE_AUTODETECT 호출되었거나 BG_JOB_PROXY_USAGE_PRECONFIG 사례의 IE 설정이 자동 검색 또는 자동 구성 URL을 지정하는 경우 WinHttpGetProxyForUrl을 통한 도우미 토큰 가장을 사용하여 자동 프록시 검색 또는 WPAD(웹 프록시 자동 검색 프로토콜)를 수행합니다.

그 후에는 도우미 토큰 가장이 프록시 또는 서버 인증에 사용됩니다.

Windows 10, 버전 1809(10.0; 빌드 17763) 사용자별 자격 증명이 있는 인증된 프록시 시나리오가 간소화되었습니다.

  1. BG_AUTH_SCHEME_NEGOTIATE, UserName이 NULL로 설정되고 암호가 NULL로 설정되고대상이BG_AUTH_TARGET_PROXY 설정된 BITS 작업의 SetCredentials메서드를 호출합니다. 이렇게 하면 프록시 및 서버를 사용하여 NTLM 및 Kerberos 인증에 사용자 계정의 암시적 자격 증명이 사용됩니다.
  2. BG_JOB_PROXY_USAGE_PRECONFIGIBackgroundCopyJob::SetProxySettings를 호출합니다.
  3. IBitsTokenOptions에 대한 QueryInterface입니다.
  4. NTLM/Kerberos 자격 증명에 사용 중인 사용자 계정을 가장합니다.
  5. SetHelperToken을 호출합니다.
  6. BG_TOKEN_NETWORK 사용하여 SetHelperTokenFlags를 호출합니다.
  7. 가장을 되돌려 갑니다.
  8. 작업 설정을 계속합니다.
  9. 작업에서 다시 시작을 호출합니다.

Windows 10, 버전 1809 이전(10.0; 빌드 17763), 올바른 사용자 ID(도우미 토큰의 ID)는 WPAD(네트워크 기반 프록시 검색) 및 프록시 인증에 사용되지만 도우미 토큰이 구성된 경우에도 로컬(IE) 프록시 설정의 실제 검색은 항상 작업 소유자의 토큰을 사용하여 수행됩니다. 이 단점을 해결하려면 다음 단계를 수행하면 됩니다.

  1. NTLM/Kerberos 자격 증명에 사용 중인 사용자 계정을 가장합니다.
  2. WinHttpGetIEProxyConfigForCurrentUser를 호출하여 사용자 계정의 IE 프록시 설정을 검색합니다.
  3. 가장을 되돌려 갑니다.
  4. BG_AUTH_SCHEME_NEGOTIATE, UserName이 NULL로 설정되고 암호가 NULL로 설정되고대상이BG_AUTH_TARGET_PROXY 설정된 BITS 작업의 SetCredentials메서드를 호출합니다. 이렇게 하면 프록시 및 서버를 사용하여 NTLM 및 Kerberos 인증에 사용자 계정의 암시적 자격 증명이 사용됩니다.
  5. 2단계에서 사용자별 프록시 설정(예: lpszProxy 또는 lpszProxyBypassNULL이 아님)을 생성한 경우 BG_JOB_PROXY_USAGE_OVERRIDE 설정과 함께 SetProxySettings를 사용하여 해당 작업 설정을 수동으로 설정합니다.
  6. 2단계에서 사용자별 프록시 설정을 생성하지 않은 경우 BG_JOB_USAGE_PRECONFIG사용하여 SetProxySettings를 호출합니다.
  7. IBitsTokenOptions에 대한 QueryInterface입니다.
  8. 사용자 계정을 다시 가장합니다.
  9. SetHelperToken을 호출합니다.
  10. BG_TOKEN_NETWORK 사용하여 SetHelperTokenFlags를 호출합니다.
  11. 가장을 되돌려 갑니다.
  12. 작업 설정을 계속합니다.
  13. 작업에서 다시 시작을 호출합니다.