我想从我的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
但遗憾的是,这些设置也没有运气。任何人都可以帮助我确定这是来自域外的假冒。