终端服务 - 可以识别用户的物理位置吗?

时间:2012-01-16 14:52:58

标签: terminal-services thin-client

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

客户端工作站h / w是混合体 - 有时是Windows PC,有时是瘦客户端单元(例如Wyse等)。

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

也不能依赖于用户的登录来识别他们的位置 - 而大多数用户只在一个位置工作,一些用户确实从一个位置旅行到另一个位置。出于安全和审计原因,不能选择每个位置的不同登录。

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

拥有客户端的IP地址后,您可以使用GeoIP之类的API来查找客户端的物理位置。