2015-01-19 1 views
2

호출 스레드 또는 전체 프로세스에서 클라이언트를 가장하는 서버에서 ImpersonateSecurityContext을 호출하고 있습니다. documentation은 다소 불투명합니다. "이 함수는 가장 토큰을 만들고 스레드 또는 프로세스가 가장 컨텍스트를 사용하여 실행되도록 허용합니다.".스레드 당 Win32에서 가장이 있습니까?

내가 가장은 호출 스레드에만 있다고 가정하고, 다른 것은 이상하게 보일 것입니다.하지만 저는 확신하고 싶습니다. MSDN 당

답변

2

:

Client Impersonation

가장을 스레드를 소유 한 프로세스와 다른 보안 정보를 사용하여 실행 스레드의 능력이다. 일반적으로 서버 응용 프로그램의 스레드은 클라이언트를 가장합니다. 이렇게하면 서버 스레드이 해당 클라이언트를 대신하여 서버의 개체에 액세스하거나 클라이언트의 자체 개체에 대한 액세스의 유효성을 검사 할 수 있습니다. - 클라이언트를 가장하기 위해 ImpersonateSecurityContext 함수를 호출 할 수있는 보안 패키지 또는 응용 프로그램 서버
...
:

마이크로 소프트 윈도우 API는 가장을 시작하기 위해 다음과 같은 기능을 제공합니다.

그래서 가장은 스레드 단위로 수행됩니다.

도용은 가장 된 사용자로 (DuplicateTokenEx()CreateProcessAsUser()를 사용하여) 새로운 프로세스를 생성하는 데 사용할 수 있지만, 가장 결코에만 스레드를 호출, 가장 된 사용자로 호출 과정 실행하지 않습니다.

동시에 여러 클라이언트를 연결할 수있는 서버 컨텍스트에서 클라이언트 위장이 프로세스 전반에 적용되는 경우 매우 위험합니다.

+0

나는 프로세스가 와이드 인 경우 이상하고, 위험하고, 완전히 어리 석을 것이라는 것을 이해하지만, 스레드별로 명시된 문서를 찾지 못했습니다. 이 문제를 지원하는 공식 문서가 있습니까? – dalle