2013-04-25 81 views
0

我想在我的asp.net c#网站上模拟一个远程活动目录帐户,该网站托管在无域计算机(或其他域)上。我已经得到这个工作:获取当前模拟用户的用户名

IntPtr token = IntPtr.Zero; 
LogonUser("username", "ad.some.other.domain.com", "password", LOGON_TYPE_NEW_CREDENTIALS, LOGON32_PROVIDER_WINNT50, ref token)) 
{ 
    WindowsImpersonationContext wic; 
    wic = WindowsIdentity.Impersonate(token); 
    //run code under the impersonated user. 

    //System.Environment.UserName returns windows user (not impersonated one) 
    //WindowsIdentity.GetCurrent() returns windows user (not impersonated one) 
} 

我的代码运行,但我无法获得模拟用户的'用户名'。我知道这是因为我使用LOGON_TYPE_NEW_CREDENTIALS作为我的登录类型,它在技术上不模仿,但使用令牌在模拟帐户下运行网络连接。这工作正常,但理想情况下,我的网站将在模拟用户下运行,所以我可以获取用户名和其他可能的功能。基本上我想作为模拟用户与网站进行交互,而不仅仅是作为模拟用户运行网络连接。我试过LOGON32_LOGON_INTERACTIVE作为登录类型,但这不允许我在我的网站上运行的域计算机上验证域帐户。

有什么我可以做的,以便我可以充分模仿(获取用户名等)并使用来自无域计算机的活动目录进行身份验证?

回答