获取当前模拟用户的用户名

时间:2013-04-25 18:38:52

标签: c# asp.net impersonation

我正在尝试在我的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作为登录类型,但这不允许我验证我的站点上运行在无域计算机上的域帐户。

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

1 个答案:

答案 0 :(得分:0)

我不确定您使用的是哪种网站,如果您需要ASP.Net或MVC

<identity impersonate="true" />

http://msdn.microsoft.com/en-CA/library/aa292118%28v=vs.71%29.aspx