Поделиться через


Метод IServerSecurity::ImpersonateClient (objidl.h)

Позволяет серверу олицетворить клиент на протяжении всего вызова.

Синтаксис

HRESULT ImpersonateClient();

Возвращаемое значение

Если метод выполнен успешно, возвращаемое значение будет S_OK. В противном случае это E_FAIL.

Комментарии

Как правило, метод выполняется в потоке, который использует маркер доступа процесса. Однако при олицетворении клиента сервер выполняется в контексте безопасности клиента, чтобы сервер получил доступ к ресурсам, к которым у клиента есть доступ. Когда требуется олицетворение, сервер вызывает метод ImpersonateClient , чтобы маркер доступа, представляющий учетные данные клиента, был назначен текущему потоку. Этот маркер потока используется для проверок доступа. RevertToSelf восстанавливает маркер доступа текущего потока.

То, что сервер может делать от имени клиента, зависит от уровня олицетворения, заданного клиентом, который задается с помощью одной из констант уровня олицетворения. Сервер может олицетворять клиент при зашифрованном вызове на уровне идентификации, олицетворения или делегата. Сведения об этих уровнях олицетворения см. в разделе Уровни олицетворения.

Удостоверение, представленное серверу с именем во время олицетворения, зависит от типа маскировки, если таковое имеется, заданного клиентом. Дополнительные сведения см. в разделе Cloaking.

В конце каждого вызова метода COM вызывает RevertToSelf , если приложение этого не делает.

Традиционно сведения олицетворения не вложенные. Последний вызов любого механизма олицетворения переопределяет любое предыдущее олицетворение. Однако в модели квартиры олицетворение сохраняется во время вложенных вызовов. Таким образом, если сервер A получает вызов из B, олицетворяется, вызывает C, получает вызов от D, олицетворение, отменяет и получает ответ от C, токен олицетворения будет иметь значение B, а не A.

Сведения об использовании олицетворения с асинхронными вызовами см. в разделе Олицетворение и асинхронные вызовы.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header objidl.h (включая ObjIdl.h)

См. также раздел

CoImpersonateClient

IServerSecurity