다음을 통해 공유


IServerSecurity::ImpersonateClient 메서드(objidl.h)

서버가 호출 기간 동안 클라이언트를 가장할 수 있도록 합니다.

구문

HRESULT ImpersonateClient();

반환 값

메서드가 성공하면 반환 값이 S_OK. 그렇지 않으면 E_FAIL.

설명

일반적으로 메서드는 프로세스의 액세스 토큰을 사용하는 스레드에서 실행됩니다. 그러나 클라이언트를 가장할 때 서버는 클라이언트의 보안 컨텍스트에서 실행되므로 서버는 클라이언트가 액세스할 수 있는 리소스에 액세스할 수 있습니다. 가장이 필요한 경우 서버는 ImpersonateClient 메서드를 호출하여 클라이언트의 자격 증명을 나타내는 액세스 토큰을 현재 스레드에 할당합니다. 이 스레드 토큰은 액세스 검사에 사용됩니다. RevertToSelf 는 현재 스레드의 액세스 토큰을 복원합니다.

서버가 클라이언트를 대신하여 수행할 수 있는 작업은 가장 수준 상수 중 하나를 사용하여 지정된 클라이언트에서 설정한 가장 수준에 따라 달라집니다. 서버는 식별, 가장 또는 대리자 수준에서 암호화된 호출에서 클라이언트를 가장할 수 있습니다. 이러한 가장 수준에 대한 자세한 내용은 가장 수준을 참조하세요.

가장하는 동안 호출된 서버에 표시되는 ID는 클라이언트에서 설정한 은폐 값의 유형(있는 경우)에 따라 달라집니다. 자세한 내용은 은폐를 참조하세요.

각 메서드 호출이 끝나면 애플리케이션이 호출하지 않으면 COM에서 RevertToSelf 를 호출합니다.

일반적으로 가장 정보는 중첩되지 않습니다. 가장 메커니즘에 대한 마지막 호출은 이전 가장을 재정의합니다. 그러나 아파트 모델에서는 중첩된 호출 중에 가장이 유지됩니다. 따라서 서버 A가 B로부터 전화를 받고, 가장하고, C를 호출하고, D로부터 전화를 받고, 가장하고, 되돌리고, C로부터 회신을 받으면 가장 토큰은 A가 아닌 B로 다시 설정됩니다.

비동기 호출에서 가장을 사용하는 방법에 대한 자세한 내용은 가장 및 비동기 호출을 참조하세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 objidl.h(ObjIdl.h 포함)

추가 정보

CoImpersonateClient

IServerSecurity