Asp.net网络应用程序将我显示为某人elses pc上的登录用户

时间:2011-07-05 04:49:24

标签: c# asp.net

好的,我真的不知道该搜索什么,所以希望有人可以帮助我。

我刚刚发布了一个asp.net Web应用程序,经过多次搞乱后终于将它加载到我的浏览器中。

但问题是,当我找到坐在我旁边的伙伴在浏览器中打开网站时,该页面显示我是登录用户。

在default.aspx中,我运行了一些抓取用户窗口标识的代码

LDAPDetails LDAPUser = new LDAPDetails(WindowsIdentity.GetCurrent().Token);
然后

LDAPDetails会这样做。

_UserName = windowsId.Name.Substring(windowsId.Name.IndexOf('\\') + 1);
        _DomainName = windowsId.Name.ToString().Remove(windowsId.Name.IndexOf('\\'));

        //Get users information from active directory
        DirectorySearcher search = new DirectorySearcher("LDAP://DCHS");
        search.Filter = String.Format("(SAMAccountName={0})", _UserName);
        SearchResult result = search.FindOne();
        if (result != null)
        {
            _FullName = result.Properties["givenName"][0].ToString() + ' ' + result.Properties["sn"][0].ToString();
            _Email = result.Properties["mail"][0].ToString();
            _FirstName = result.Properties["givenName"][0].ToString();
            _SSID = windowsId.User.ToString();
            _errMsg = "";
        }

然后将这些值放入会话变量中。

似乎WindowsIdentity.GetCurrent()。令牌仍在使用我的详细信息,即使它在我没有登录的机器上。

思想?

4 个答案:

答案 0 :(得分:3)

Web应用程序正在您登录的Web服务器(可能是您的计算机)上运行,因此代码WindowsIdentity.GetCurrent()。令牌在Web服务器上执行,当然这将返回您的凭据。< / p>

Web应用程序身份验证有许多不同的机制,您需要进行一些谷歌搜索。

答案 1 :(得分:3)

同意Tim - WindowsIdentity.GetCurrent()将在服务器上执行,并将返回运行服务器进程(IIS中的工作进程)的Windows用户,该用户恰好是您的帐户。

您需要做的是在IIS和ASP.NET(web.config)中设置Windows /集成身份验证,然后使用HttpContext.Current.User.Identity而不是WindowsIdentity.GetCurrent()

答案 2 :(得分:0)

您可能正在获取服务器上运行的进程的标识。如果您使用的是IIS,则这是应用程序池中的帐户设置。按照此MSDN链接http://msdn.microsoft.com/en-us/library/aa292114(v=vs.71).aspx上的说明在IIS上配置集成Windows身份验证。

答案 3 :(得分:0)

您是否尝试过使用User.Identity.Name获取用户名?

它使用IIdentiy interface