在服务器上调用ImpersonateSecurityContext
模拟调用线程上的客户端或整个进程。 documentation在这个问题上有点模糊,因为它声明“该函数创建一个模拟令牌并允许线程或进程与模拟上下文一起运行”。
我认为假冒只针对调用线程,其他任何事情都会很奇怪,但我想确定。
答案 0 :(得分:5)
每个MSDN:
模拟是使用与拥有该线程的进程不同的安全信息执行线程的能力。通常,服务器应用程序中的线程模拟客户端。这允许服务器线程代表该客户端访问服务器上的对象或验证对客户端自己对象的访问。
Microsoft Windows API提供以下功能来开始模拟:
...
- 安全包或应用程序服务器可以调用ImpersonateSecurityContext
函数来模拟客户端。
因此,模拟是基于每个线程完成的。
模拟可用于以模拟用户的身份生成新流程(使用DuplicateTokenEx()
和CreateProcessAsUser()
)但模拟永远不会使调用进程作为模拟用户运行,只调用线程。
在服务器上下文中,可以同时连接多个客户端,如果在进程范围的基本上应用客户端模拟,则会非常危险。