2012-01-16 4 views
0

При использовании служб терминалов (возможно, или без надстроек Citrix) можно определить физическое местоположение пользователя?Службы терминалов - можно идентифицировать физическое местоположение пользователя?

Клиентская рабочая станция h/w представляет собой смесь - иногда это компьютер Windows, иногда - тонкий клиентский блок (например, Wyse и т. Д.).

Наше приложение должно изменять функциональные возможности бизнеса, основанные, по существу, на местоположении пользователя. Например, соблюдение различных законов штата или обработка денежных средств (денежный ящик может использоваться любой рабочей станцией в филиале или магазине, но не может быть доступен из других филиалов или магазинов).

Также не может зависеть от входа пользователя в систему, чтобы идентифицировать свое местоположение - в то время как большинство пользователей будут работать только в одном месте, некоторые пользователи путешествуют из одного места в другое. Наличие разных логинов для каждого местоположения не является вариантом для соображений безопасности и аудита.

Помимо запроса пользователя, где они находятся (что-то непонятного), существуют ли какие-либо API, системная поддержка или методы для решения этой проблемы?

Спасибо!

ответ

1

На сервере удаленного рабочего стола вы можете определить приблизительное физическое местоположение пользователя на основе их IP-адреса. Вы можете получить удаленный IP-адрес, связанный с сеансом, с помощью функции API Win32 WinStationQueryInformationW с информационным классом WinStationRemoteAddress. Если вы используете язык .NET, вы можете использовать Cassia library - удаленная конечная точка IP будет показана как ITerminalServicesSession.RemoteEndPoint. Не путайте удаленный IP-адрес с IP-адресом, сообщенным клиентом, доступным из RDS API. IP-адрес клиента не будет возвращать публичный IP-адрес клиента, если клиент, например, находится за NAT-маршрутизатором - он вернется вместо этого используется частный IP-адрес.

Как только у вас есть IP-адрес клиента, вы можете использовать API, например GeoIP, для поиска физического местоположения клиента.

+0

Хорошая информация - Спасибо! К сожалению, это не даст нам решения для нашей ситуации. Насколько я понимаю, это обеспечит местоположение с разрешением, в лучшем случае, нескольких миль. По сути, нам нужно знать точное здание. Кроме того, я не сказал об этом в этом вопросе, но клиентские машины не сталкиваются с Интернетом - они и серверы работают на внутреннем wan-сервере нашего клиента, поэтому я не считаю, что GeoIP может предоставлять любые данные разрешения. Но спасибо за ваше время в ответе! – MarkL

+0

Я вижу. В этом случае вы могли бы использовать методы, описанные в моем ответе, для получения IP-адреса клиента, но тогда вам нужно будет написать некоторый код, относящийся к конкретной среде, для сопоставления его с конкретным местоположением. Вероятно, вам придется жестко закодировать что-то на основе подсети IP, обратных записей DNS или структуры Active Directory (вы можете получить имя компьютера клиента из метаданных сеанса), но опять же, это очень специфично для среды, Я не знаю, как я (или кто-то еще здесь) мог бы помочь вам в этом. –