繁体   English   中英

在允许的进程之间传递Windows安全令牌

[英]Is passing a windows security token between processes permitted

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

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

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

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

我还没有尝试过,但似乎这是同样的问题在这里问 描述似乎有意义。 通过您选择的任何机制(例如,IPC)传递进程ID,然后调用OpenProcessOpenProcessToken ,最后调用ImpersonateLoggedOnUser 生成的句柄可以传递给CreateProcessAsUser。 嗯...我知道它可以传递给那个函数但是它是否会有我想知道的结果。 但有趣的问题。

为什么不使用命名管道,然后调用ImpersonateNamedPipeUser() - 它安全可靠! 请注意,执行模拟的过程必须具有模拟权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM