来自域外的模拟

时间:2013-10-01 13:59:50

标签: c# impersonation

我想从我的Web应用程序向域内的服务器写一个文件,但托管我的Web应用程序的服务器不属于该域。我试图使用模拟,但它给出了这个错误:登录失败:未知的用户名或密码错误。

以下是我冒充的代码:

 private bool impersonateValidUser(String userName, String domain, String password)
    {
        WindowsIdentity tempWindowsIdentity;
        IntPtr token = IntPtr.Zero;
        IntPtr tokenDuplicate = IntPtr.Zero;

        if (RevertToSelf())
        {

            if (LogonUser(userName, domain, password, LOGON_TYPE_NEW_CREDENTIALS, LOGON32_PROVIDER_WINNT50, ref token) != 0)
            {

                if (DuplicateToken(token, 2, ref tokenDuplicate) != 0)
                {

                    tempWindowsIdentity = new WindowsIdentity(tokenDuplicate);
                    impersonationContext = tempWindowsIdentity.Impersonate();
                    if (impersonationContext != null)
                    {
                        CloseHandle(token);
                        CloseHandle(tokenDuplicate);

                        return true;
                    }
                }
            }

        }
        if (token != IntPtr.Zero)
            CloseHandle(token);
        if (tokenDuplicate != IntPtr.Zero)
            CloseHandle(tokenDuplicate);
        return false;
    }

我尝试过使用LOGON32_PROVIDER_DEFAULT和LOGON32_PROVIDER_WINNT50

但遗憾的是,这些设置也没有运气。任何人都可以帮助我确定这是来自域外的假冒。

0 个答案:

没有答案