我在服务器上有网络服务!此服务是从客户端应用程序调用的!
现在我如何获取使用此服务的客户端的用户名和计算机名称,例如,如果来自Clint1的应用程序调用此服务,我想获取Clint1的计算机名称和用户名?
非常感谢!
答案 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地址,那么这些信息将达到您想要的效果。