ImpersonateLoggedOnUser 함수(securitybaseapi.h)

ImpersonateLoggedOnUser 함수를 사용하면 호출 스레드가 로그온한 사용자의 보안 컨텍스트를 가장할 수 있습니다. 사용자는 토큰 핸들로 표시됩니다.

구문

BOOL ImpersonateLoggedOnUser(
  [in] HANDLE hToken
);

매개 변수

[in] hToken

로그온한 사용자를 나타내는 기본 또는 가장 액세스 토큰 에 대한 핸들입니다. LogonUser, CreateRestrictedToken, DuplicateToken, DuplicateTokenEx, OpenProcessToken 또는 OpenThreadToken 함수에 대한 호출에서 반환되는 토큰 핸들일 수 있습니다. hToken기본 토큰에 대한 핸들인 경우 토큰에는 TOKEN_QUERYTOKEN_DUPLICATE 액세스 권한이 있어야 합니다. hToken가장 토큰에 대한 핸들인 경우 토큰에는 TOKEN_QUERYTOKEN_IMPERSONATE 액세스 권한이 있어야 합니다.

반환 값

함수가 성공하면 반환 값이 0이 아닙니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

가장은 스레드가 종료되거나 RevertToSelf를 호출할 때까지 지속됩니다.

호출 스레드에는 ImpersonateLoggedOnUser를 호출하기 위한 특정 권한이 필요하지 않습니다.

ImpersonateLoggedOnUser에 대한 호출이 실패하면 클라이언트 연결이 가장되지 않고 클라이언트 요청이 프로세스의 보안 컨텍스트에서 수행됩니다. 프로세스가 LocalSystem과 같은 높은 권한의 계정으로 실행되거나 관리 그룹의 구성원으로 실행되는 경우 사용자는 그렇지 않으면 허용되지 않는 작업을 수행할 수 있습니다. 따라서 항상 호출의 반환 값을 검사 것이 중요하며, 실패하면 오류가 발생합니다. 클라이언트 요청의 실행을 계속하지 마세요.

ImpersonateLoggedOnUser를 포함한 모든 가장 함수는 다음 중 하나가 true인 경우 요청된 가장을 허용합니다.

  • 토큰의 요청된 가장 수준이 SecurityIdentification 또는 SecurityAnonymous와 같은 SecurityImpersonation보다 작습니다.
  • 호출자에게 는 SeImpersonatePrivilege 권한이 있습니다.
  • 프로세스(또는 호출자의 로그온 세션의 다른 프로세스)는 LogonUser 또는 LsaLogonUser 함수를 통해 명시적 자격 증명을 사용하여 토큰을 만들었습니다.
  • 인증된 ID는 호출자와 동일합니다.
WINDOWS XP SP1 이하: SeImpersonatePrivilege 권한은 지원되지 않습니다.

가장에 대한 자세한 내용은 클라이언트 가장을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows XP [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2003 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 securitybaseapi.h(Windows.h 포함)
라이브러리 Advapi32.lib
DLL Advapi32.dll

추가 정보

클라이언트/서버 Access Control 함수

클라이언트/서버 Access Control 개요

CreateProcessAsUser

CreateRestrictedToken

DuplicateToken

DuplicateTokenEx

LogonUser

OpenProcessToken

OpenThreadToken

RevertToSelf