BITS 전송 작업에 대한 도우미 토큰

Windows Vista에서 BITS(Background Intelligent Transfer Service) 서비스를 사용하면 애플리케이션이 단일 보안 토큰을 BITS 전송 작업에 연결할 수 있습니다. 그런 다음 BITS 전송 작업은 인증에 이 토큰을 사용하고 로컬 및 원격 리소스에 액세스합니다.

Windows 7에서 BITS 서비스는 추가 토큰을 BITS 전송 작업에 연결합니다. BITS 전송 작업은 BITS COM API를 호출하는 애플리케이션에서 만든 가장 토큰인 추가 보안 토큰으로 구성할 수 있습니다. 이 도우미 토큰 모델을 사용하면 애플리케이션에서 두 개의 서로 다른 보안 토큰을 동시에 사용하여 로컬 파일, 클라이언트 쪽 인증서, 원격 파일 및 프록시에 액세스할 수 있습니다. 예를 들어 다운로드한 데이터를 권한 있는 로컬 디렉터리에 쓴 다음 HTTP 서버 및 프록시 서버에 낮은 권한 도메인 ID를 제공하는 BITS 전송 작업이 만들어집니다.

일반적으로 Windows 서비스인 애플리케이션은 새 인터페이스 IBitsTokenOptions를 사용하여 도우미 토큰을 지정합니다. 이 인터페이스는 BITS 작업 개체에 의해 구현됩니다. 애플리케이션은 IBackgroundCopyJob::QueryInterface 를 호출하여 인터페이스 포인터를 가져옵니다. 애플리케이션은 도우미 ID를 가장하고 IBitsTokenOptions::SetHelperToken 을 호출하여 토큰을 BITS 서비스에 전달합니다. 그런 다음, 애플리케이션은 IBitsTokenOptions::SetHelperTokenFlags를 사용하여 비트 플래그 집합을 전달하여 토큰이 적용되는 리소스를 지정합니다. 애플리케이션은 동작을 되돌리기 위해 모든 플래그(SetHelperTokenFlags를 다시 사용)를 지웁니다. BITS 서비스는 비트 플래그와 토큰을 BITS 전송 작업에 저장합니다.

BITS 전송 작업의 소유자가 로그오프하면 BITS 서비스는 전송 작업과 연결된 도우미 토큰을 모두 삭제합니다. 전송이 완료되지 않으면 BITS 서비스는 BG_E_TOKEN_REQUIRED 오류 코드를 사용하여 작업을 오류 상태로 두고 도우미 토큰을 삭제합니다. 클라이언트 애플리케이션은 IBitsTokenOptions::SetHelperToken을 호출하여 토큰을 새로 고친 다음 BITS 전송 작업을 다시 시작할 수 있습니다. 또는 클라이언트 애플리케이션이 IBitsTokenOptions::SetHelperTokenFlags 를 사용하여 도우미 토큰 플래그를 지우고 도우미 토큰 없이 전송 작업을 다시 시작할 수 있습니다.

마찬가지로 터미널 서비스 세션의 소유자가 로그오프할 때 BITS 서비스는 해당 세션에서 도우미 토큰을 삭제하고 영향을 받는 전송 작업을 오류 상태로 BG_E_TOKEN_REQUIRED 오류 코드와 함께 배치해야 합니다.

도우미 토큰 모델을 사용하려면 BITS 액세스 제어 정책을 변경해야 합니다. 이전 버전의 BITS는 모든 메서드 호출에 대한 액세스 검사를 구현했습니다. Windows 7부터 IBackgroundCopyJob::QueryInterface 호출 내에서 액세스 검사 수행해야 합니다. 그렇지 않으면 도우미 토큰이 전송 작업에 액세스할 수 없을 수 있습니다.

참고

이전 구현에서는 도우미 토큰을 설정하기 위해 BITS 사용자에게 관리자 권한이 있어야 했습니다. Windows 10 버전 1607부터 관리자가 아닌 BITS 사용자는 IBitsTokenOptions::SetHelperToken을 사용하여 관리자가 아닌 도우미 토큰을 소유한 BITS 작업에 설정할 수 있습니다. 이렇게 변경하면 관리자가 아닌 BITS 사용자(예: NetworkService 계정에서 실행되는 백그라운드 다운로더 서비스)가 도우미 토큰을 설정할 수 있습니다.

특히 관리자 권한이 없는 사용자가 다음 조건이 충족되는 한 도우미 토큰을 설정할 수 있도록 구현이 변경되었습니다.

 

IBitsTokenOptions