windows - 在允许的进程之间传递 Windows 安全 token

标签 windows security impersonation

假设我有一个以特定用户身份在 Windows 下运行的现有进程。是否允许该进程获取其当前 token (使用 OpenThreadToken 和 DuplicateTokenEx 之类的东西),将其传递给同一台机器上的另一个进程(可能通过网络套接字或其他 IPC),然后期望该进程能够使用它来调用 CreateProcessAsUser?

从我阅读的文档 (http://msdn.microsoft.com/en-us/library/ms682429%28VS.85%29.aspx) 中,我没有看到任何禁止这样做的内容,但也许 token 只能由创建它的线程或进程使用。

(为什么?我想让 Web 请求进入 IIS,进行身份验证,让 IIS 安排远程用户的模拟,然后将模拟 token 传递给另一个服务器进程(在同一台机器上),以便服务器进程可以在远程用户的上下文中执行一些安全检查)

最佳答案

是的,这是可能的。您可以使用 DuplicateHandle 获取对目标进程有效的句柄(将新句柄值发送到目标进程,以便它知道。)。 但是,目标进程仍必须具有相应的使用 token 的权限。例如。 SE_IMPERSONATE 模拟用户和 SE_ASSIGN_PRIMARY 供 CPAU 使用。当然,您可以在 MSDN 中阅读有关 ImpersonateLoggedOnUser 和 CPAU 的一些异常(exception)情况。

关于windows - 在允许的进程之间传递 Windows 安全 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2331363/

相关文章:

asp.net - IIS7 模拟无法访问 TFS 存储库

Powershell 模拟

c++从静态函数调用非静态函数

security - 20字节数据CRC16冲突的可能性有多大?

java - 无需安装即可在 Windows 中获取 Oracle Java 1.8

android - 在 Android 4.0+ 上检测屏幕截图尝试

c# - 无法复制文件,即使在 C# 中授予了 FileIOPermission

c# - 通过 NTLM 模拟用户

c# - 杀死资源管理器进程

windows - 我如何知道我的外部 IP 地址是什么?