Authentication 从模拟令牌进行网络登录

Authentication 从模拟令牌进行网络登录,authentication,winapi,impersonation,Authentication,Winapi,Impersonation,在使用ImpersonateNamedPipeClient模拟客户端的服务中,我尝试调用CreateProcessAsUser。 可执行文件名是位于第三台计算机(既不是服务器,也不是连接到管道的客户端)上的UNC路径 呼叫失败,错误代码为5拒绝访问。我尝试使用WNetAddConnection2在令牌上下文中对客户端进行身份验证,该令牌将在服务器调用ImpersonateNamedPipeClient之前被模拟,但仍然收到相同的错误 考虑到服务器仅获得模拟令牌才能访问可执行文件,我如何对模拟的帐

在使用ImpersonateNamedPipeClient模拟客户端的服务中,我尝试调用CreateProcessAsUser。 可执行文件名是位于第三台计算机(既不是服务器,也不是连接到管道的客户端)上的UNC路径

呼叫失败,错误代码为5拒绝访问。我尝试使用WNetAddConnection2在令牌上下文中对客户端进行身份验证,该令牌将在服务器调用ImpersonateNamedPipeClient之前被模拟,但仍然收到相同的错误


考虑到服务器仅获得模拟令牌才能访问可执行文件,我如何对模拟的帐户进行身份验证?

我的Win32已相当生锈,因此这可能是一个偶然的机会,但是您是否尝试过使用CreateProcessAsUser函数而不是CreateProcess?根据协议,它将在受限令牌上运行。如果我没记错的话,一个模拟令牌就足够了


希望有帮助。

CreateProcessAsUser需要一个主令牌,而不是模拟令牌。您可以使用DuplicateTokenEx从模拟令牌获取主令牌。CreateProcessAsUser的文档甚至说明了这一点。

我在问题中犯了一个错误,当然我使用CreateProcessAsUser。关键是令牌是从ImpersonateNamedPipeClient获取的,客户端无法访问网络。我编辑了我的问题。被模拟的用户需要访问网络,并且需要在第三台机器上拥有权限。对你来说,这两个都是真的吗?谢谢你的帮助。我已经在使用DuplicateTokenEx了。我刚刚将模拟级别从SecurityImpersonation更改为SecurityDelegation,但如果可执行文件是远程的,我仍然会收到相同的错误。