2012-01-16 51 views
0

使用终端服务时(可能带有或可能没有Citrix附加软件),用户的物理位置是否可以识别?终端服务 - 可以识别用户的物理位置吗?

客户端工作站h/w是一种混合 - 有时是Windows pc,其他时间是瘦客户端单元(例如Wyse等)。

我们的应用程序需要根据用户的位置改变业务功能。例如,遵守不同的州法律或现金处理(一个分支机构或商店的任何工作站都可以使用现金抽屉,但不能从其他分支机构或商店进行访问)。

也不能依赖用户的登录来确定他们的位置 - 虽然大多数用户只能在一个位置工作,但有些用户确实从一个位置移动到另一个位置。出于安全和审计的原因,为每个位置登录不是一种选择。

除了询问用户他们在哪里(肯定是一个有问题的解决方案),是否有任何API,系统支持或技术来解决这种类型的需求?

谢谢!

回答

1

在远程桌面服务器上,您可以根据用户的IP地址识别用户的近似物理位置。您可以使用Win32 API函数WinStationQueryInformationW以及WinStationRemoteAddress信息类获取与会话关联的远程IP地址。如果您使用.NET语言,则可以使用Cassia library - 远程IP端点作为ITerminalServicesSession.RemoteEndPoint公开。不要将远程IP地址与RDS API提供的客户端报告的IP地址相混淆 - 如果客户端位于NAT路由器后面,客户端报告的IP将不会返回客户端的公共IP - 它将返回一个私人IP地址。

一旦你有客户端的IP地址,你可以使用像GeoIP这样的API来查找客户端的物理位置。

+0

好信息 - 谢谢!不幸的是,这不会为我们的情况提供解决方案。据我了解,这将提供一个位置,最多只有几英里的分辨率。实质上,我们需要知道确切的建筑物。另外,我没有在问题中说明,但客户端机器并不面向互联网 - 它们和服务器都在我们客户端的内部网络上运行,所以我不相信GeoIP可以提供任何分辨率数据。但是,谢谢你的回复! – MarkL 2012-01-19 14:49:48

+0

我明白了。在这种情况下,您可以使用我的答案中描述的方法来获取客户端的IP地址,但是您需要编写一些特定于环境的代码以将其映射到特定位置。你可能需要根据IP子网,反向DNS记录或Active Directory结构(可以从会话元数据中获取客户端的计算机名称)对某些东西进行硬编码 - 但是,这又是非常特定环境的,我不知道我(或其他任何人)如何直接帮助你。 – 2012-01-19 17:44:36

相关问题