所以,我的問題與在生產服務器上的代碼,運行Windows Server 2003 & IIS 6ASP.NET模擬不工作的生產
我試圖模擬一個域帳戶,它在本地工作正常。
雖然當它的功能模擬用戶無法在服務器上,即返回false:
private bool impersonateValidUser(String userName, String domain, String password)
{
WindowsIdentity tempWindowsIdentity;
IntPtr token = IntPtr.Zero;
IntPtr tokenDuplicate = IntPtr.Zero;
if (RevertToSelf())
{
if (LogonUserA(userName, domain, 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 true;
}
}
}
}
if (token != IntPtr.Zero)
CloseHandle(token);
if (tokenDuplicate != IntPtr.Zero)
CloseHandle(tokenDuplicate);
return false;
}
注意,代碼不會崩潰 - 它只是返回false。有沒有人經歷過這個,並有什麼我應該開始看什麼想法?我假設IIS配置在這裏,但可能需要幾周才能找到導致此問題的小問題。
我可以使用我試圖模擬在服務器上安裝驅動器的帳戶,以便帳戶用戶/密碼組合很好,並且可以用於在Windows資源管理器中進行身份驗證。
請問哪個版本的IIS和Windows Server?請注意,您必須執行各種步驟才能進行委派,人們忘記做的最常見的事情就是允許服務器自己在Active Directory中委派「許可」。有關概覽,請參閱http://support.microsoft.com/kb/810572。 – dash 2013-04-30 07:59:10
2003&IIS 6 - 很好,我也會加入到這個問題中。 – 2013-04-30 08:00:38
@dash該網站通常不會使用Windows模擬,因爲它是外部面向的 - 但我使用它來執行一次身份驗證,以從共享驅動器恢復文件。 – 2013-04-30 08:35:03