0

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

客户端工作站硬件是混合的——有时是 Windows pc,有时是瘦客户端单元(例如 Wyse 等)。

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

也不能依赖用户的登录来识别他们的位置 - 虽然大多数用户只会在一个位置工作,但有些用户确实从一个位置到另一个位置。出于安全和审计原因,不能为每个位置使用不同的登录名。

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

谢谢!

4

1 回答 1

1

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

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

于 2012-01-17T14:20:12.077 回答