0
我試圖模擬另一個域上的用戶,以查詢該域。有些背景請參閱Accessing user info from a one way trust。在另一個域上模擬用戶,單向信任
當我使用本地域用戶時,我的模擬工作正常。當我指定目標域時,也是通過LDAPS端口636,它不起作用。我的模擬返回null。
我的模擬代碼
public static WindowsImpersonationContext ImpersonateUser(ConnectionCredentials user)
{
WindowsIdentity tempWindowsIdentity;
IntPtr token = IntPtr.Zero;
IntPtr tokenDuplicate = IntPtr.Zero;
if (RevertToSelf())
{
if (LogonUser(user.UserName, user.Domain, user.Password, LOGON32_LOGON_INTERACTIVE,
LOGON32_PROVIDER_DEFAULT, 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 impersonationContext;
}
}
}
}
if (token != IntPtr.Zero)
CloseHandle(token);
if (tokenDuplicate != IntPtr.Zero)
CloseHandle(tokenDuplicate);
return impersonationContext;
}
任何想法? 謝謝。
你是說impersonationContext爲null?我沒有看到代碼是如何工作的,因爲impersonationContext沒有在正確的範圍內聲明。使用'GetLastError'檢查從'LogonUser'返回的錯誤代碼 –