如何正确使用 LogonUser 从工作组客户端模拟域用户

2024-01-21

ASP.NET:模拟 VMWare 上的域 https://stackoverflow.com/questions/278132/asp-net-impersonate-against-a-domain-on-vmware

这个问题就是我要问的,但答案没有提供 _token 是如何派生的详细信息。好像只能用WindowsIdentity.GetCurrent().Token所以不会发生冒充行为。

我可以在 .NET 中模拟不同 Active Directory 域上的用户吗? https://stackoverflow.com/questions/997001/can-i-impersonate-a-user-on-a-different-active-directory-domain-in-net

下一个问题的答案相互矛盾,被接受的答案带有评论“我开始怀疑我的问题出在其他地方。”没有帮助。

LogonUser 仅适用于我的域 https://stackoverflow.com/questions/993418/logonuser-works-only-for-my-domain

下一个问题似乎暗示这是不可能的,但它涉及 2 个域,所以我不确定它是否相关。

我真正的问题是:

  • 是否可以?如果是这样,
  • How? or 我哪里做错了?

到目前为止我尝试过的是,使用来自http://msdn.microsoft.com/en-us/library/chf6fbt4%28v=VS.80%29.aspx http://msdn.microsoft.com/en-us/library/chf6fbt4%28v=VS.80%29.aspx

bool returnValue = LogonUser(user, domain, password,
            LOGON32_LOGON_NETWORK, LOGON32_PROVIDER_DEFAULT,
            ref tokenHandle);
// after this point, returnValue = false

Win32 错误是

登录失败:用户名未知或密码错误


很少有帖子建议使用LOGON_TYPE_NEW_CREDENTIALS代替LOGON_TYPE_NETWORK or LOGON_TYPE_INTERACTIVE。我遇到了模拟问题,一台机器连接到域,另一台机器没有连接,这解决了这个问题。 最后的代码片段在这个帖子 http://www.cstruter.com/blog/270表明冒充整个森林确实有效,但它没有具体说明如何建立信任。所以这可能值得尝试:

const int LOGON_TYPE_NEW_CREDENTIALS = 9;
const int LOGON32_PROVIDER_WINNT50 = 3;
bool returnValue = LogonUser(user, domain, password,
            LOGON_TYPE_NEW_CREDENTIALS, LOGON32_PROVIDER_WINNT50,
            ref tokenHandle);

MSDN 说 http://msdn.microsoft.com/en-us/library/windows/desktop/aa378184.aspx that LOGON_TYPE_NEW_CREDENTIALS仅在使用时有效LOGON32_PROVIDER_WINNT50.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何正确使用 LogonUser 从工作组客户端模拟域用户 的相关文章

随机推荐