【问题标题】:getting the username of the currently impersonated user获取当前模拟用户的用户名
【发布时间】:2013-04-19 18:57:22
【问题描述】:

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

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

【问题讨论】:

    标签: c# asp.net impersonation


    【解决方案1】:

    我不知道你用的是什么类型的网站,如果是 ASP.Net 或 MVC 你需要做

    <identity impersonate="true" />
    

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

    【讨论】:

    • 谢谢,是的,我的 web.config 文件中已经有了。我的网站是 asp.net(没有 mvc 或项目只是标准网站)。
    猜你喜欢
    • 2011-11-28
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 2014-08-21
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多