Олицетворение клиента (авторизация)
Олицетворение — это возможность выполнения потока с использованием другой информации безопасности, отличной от процесса, который владеет потоком. Как правило, поток в серверном приложении олицетворяет клиента. Это позволяет потоку сервера действовать от имени этого клиента, чтобы получить доступ к объектам на сервере или проверить доступ к собственным объектам клиента.
API Microsoft Windows предоставляет следующие функции для начала олицетворения:
- Серверное приложение DDE может вызывать функцию DdeImpersonateClient для олицетворения клиента.
- Сервер именованных каналов может вызывать функцию ImpersonateNamedPipeClient.
- Вы можете вызвать функцию ImpersonateLoggedOnUser, чтобы олицетворить контекст безопасности маркера доступа пользователя, вошедшего в систему.
- Функция ImpersonateSelf позволяет потоку создавать копию собственного маркера доступа. Это полезно, если приложению необходимо изменить контекст безопасности одного потока. Например, иногда для включения привилегий требуется только один поток процесса.
- Функцию SetThreadToken можно вызвать, чтобы целевой поток выполнялся в контексте безопасности указанного токена олицетворения.
- Приложение сервера удаленной процедуры (RPC) microsoft может вызвать функцию RpcImpersonateClient , чтобы олицетворить клиент.
- Пакет безопасности или сервер приложений может вызывать функцию ImpersonateSecurityContext для олицетворения клиента.
Для большинства этих олицетворений поток олицетворения может отменить изменения в собственный контекст безопасности, вызвав функцию RevertToSelf. Исключением является олицетворение RPC, в котором приложение сервера RPC вызывает RpcRevertToSelf или RpcRevertToSelfEx для отменить изменения в собственный контекст безопасности.
Примечание. Если вы олицетворение пользователя из службы Win32, и вы вызываете API, которые полагаются на переменные пользовательской среды, вам может потребоваться вызвать RegDisablePredefinedCache , прежде чем выполнять олицетворение.