从Web服务中检索客户端用户名和计算机名

时间:2010-01-14 10:54:10

标签: c# .net asp.net vb.net visual-studio

我在服务器上有网络服务!此服务是从客户端应用程序调用的!

现在我如何获取使用此服务的客户端的用户名和计算机名称,例如,如果来自Clint1的应用程序调用此服务,我想获取Clint1的计算机名称和用户名?

非常感谢!

3 个答案:

答案 0 :(得分:1)

你真的不可靠。

服务器变量REMOTE_HOST可能会为您提供,但在大多数情况下,它将是一个IP地址,它可能是代理的IP地址。此外 - 它可以很容易被欺骗。

用户名(REMOTE_USER)也是如此,除非您使用某种WS-Security机制来验证呼叫您的网络服务的用户。

答案 1 :(得分:0)

客户必须将此信息传递给服务。

答案 2 :(得分:0)

正如Wim所说,你无法可靠地获得这些信息。对于有保证的Windows网络,您可以使用服务器变量检索当前经过身份验证的用户(到计算机):

System.Web.HttpContext.Current.Request.ServerVariables("LOGON_USER")

REMOTE_HOST变量应该返回机器名,但在大多数情况下(如他所说),它只是一个IP地址。

即使在局域网上,这也不是一种明智的安全措施。此信息仍然可以在本地欺骗,从而为内部用户提供伪装成其他用户的能力。如果它只是用于识别(而不是认证或授权),它可能“足够好”。如果您维护了一个小型数据表(或网络团队),将每台PC识别为其预期的IP地址,那么这些信息将达到您想要的效果。