gpt4 book ai didi

c# - 当您的网络服务器在同一网络上时,如何通过网站获取远程计算机当前登录用户的用户名?

转载 作者:太空宇宙 更新时间:2023-11-03 11:30:02 26 4
gpt4 key购买 nike

我知道你们中的许多人会认为我的问题已经被提出和回答,但我只想讨论我尝试过的许多选项。

现在我的设置是这样的。大约 50 个运行 Windows XP Professional 的客户端。一台运行 Windows Server 2003 的服务器。称之为服务器 A一台运行 squid 作为代理服务器和 linux 操作系统的服务器。称它为服务器 B一台运行 Apache 的服务器(虽然是 wamp 服务器)。称其为服务器 C。现在客户端使用 Windows 事件目录登录到域,域服务器是服务器 A。现在浏览器配置为使用代理服务器,即服务器 B。

代理服务器已配置为不允许下载超过限制(即在我的情况下为 100 Mb)。当客户端发出超过限制的请求时,将向用户显示错误页面。

现在我已经替换了错误页面,它将用户重定向到我在机器 C 上运行的网站。我还得到了用户试图访问的链接。现在我需要找出哪个用户登录了系统。这样我就可以下载文件,然后通知相应用户下载完成。

现在我可以做的只是询问用户名或电子邮件等...但我想让用户免于再次输入他的名字。

我尝试了以下选项。

  1. .NET http://www.codeproject.com/KB/cs/getusername.aspx (没用。可能是我错过了什么)
  2. wmic http://www.robvanderwoude.com/ntadmincommands.php#Cmd02 (工作)
  3. 通过 squid 进行身份验证(ldap、事件目录等)

现在我对此有疑问。

  1. 这些都是我有的选择还是我遗漏了什么?
  2. 为什么 .NET 选项不起作用?
  3. 我可以使用各种 squid 身份验证方法中的任何一种,但我想所有方法都需要用户在登录计算机后至少登录一次。我不想要这个。有没有一种方法可以只使用用户登录时完成的身份验证,而不是再次询问他的用户名和密码?

最佳答案

为了获得用户的域登录,在 ASP.Net 应用程序中,您需要使用 Request.ServerVariables("logon_user")

但是,还有其他的注意事项:

1) 您必须只为该网站启用 Windows 身份验证。

2) 您用户的浏览器(假设为 IE)必须打开启用集成 Windows 身份验证

3) 如果从浏览器到您的 ASP.Net 应用程序的请求是间接的(即超过 1 跳),那么您将必须确保所有涉及的系统都配置为 Kerberos 身份验证(这可能非常“挑战”)。

您还可以将 ASP.Net 设置为 impersonate the end user ,这将使您的原始代码能够正常工作。然而,这意味着线程中发生的一切(数据库访问、文件访问等)都将作为最终用户执行。

关于c# - 当您的网络服务器在同一网络上时,如何通过网站获取远程计算机当前登录用户的用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8108398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com