2012-01-16 3 views
0

터미널 서비스를 사용할 때 (아마도 Citrix 추가 기능이있을 수도 있고 없을 수도 있음) 사용자의 실제 위치를 식별 할 수 있습니까?터미널 서비스 - 사용자의 실제 위치를 식별 할 수 있습니까?

클라이언트 워크 스테이션 하드웨어는 혼합되어 있습니다 (때로는 Windows PC, 다른 경우는 씬 클라이언트 장치 (예 : Wyse)).

Google 앱은 본질적으로 사용자의 위치에 따라 업무 기능을 변경해야합니다. 예를 들어, 다른 주법 또는 현금 처리 (지 점이나 상점의 워크 스테이션에서는 금전 함을 사용할 수 있지만 다른 지 점이나 상점에서는 액세스 할 수 없음)을 준수해야합니다.

또한 사용자의 위치를 ​​식별하기 위해 사용자의 로그온에 의존 할 수 없습니다. 대부분의 사용자는 한 위치에서만 작업하고 일부 사용자는 한 위치에서 다른 위치로 이동합니다. 보안 및 감사를 위해 각 위치마다 다른 로그온을하는 것은 옵션이 아닙니다.

사용자의 위치를 ​​묻는 것 외에는 (문제가있는 솔루션 임), 이러한 유형의 요구를 해결하기위한 API, 시스템 지원 또는 기술이 있습니까?

감사합니다.

답변

1

원격 데스크톱 서버에서 IP 주소를 기반으로 사용자의 대략적인 실제 위치를 식별 할 수 있습니다. 정보 클래스 WinStationRemoteAddress와 함께 Win32 API 함수 WinStationQueryInformationW을 사용하여 세션과 연결된 원격 IP 주소를 얻을 수 있습니다. .NET 언어를 사용하는 경우 Cassia library을 사용할 수 있습니다. 원격 IP 엔드 포인트는 ITerminalServicesSession.RemoteEndPoint로 표시됩니다. 원격 IP 주소와 RDS API에서 사용할 수있는 클라이언트보고 IP 주소를 혼동하지 마십시오. 클라이언트가 예를 들어 NAT 라우터 뒤의 경우 클라이언트보고 IP는 클라이언트의 공용 IP를 반환하지 않습니다. 대신 사설 IP 주소.

일단 클라이언트의 IP 주소가 있으면 GeoIP과 같은 API를 사용하여 클라이언트의 물리적 위치를 찾을 수 있습니다.

+0

좋은 정보 - 고마워요! 불행히도, 이것은 우리 상황에 대한 해결책을 제공하지 않습니다. 내가 이해함에 따라, 이것은 몇 마일의 해상도를 가진 위치를 제공 할 것입니다. 우리는 본질적으로 정확한 건물을 알아야합니다. 또한 질문에 대해서는 언급하지 않았지만 클라이언트 컴퓨터는 인터넷에 직면하지 않습니다. 클라이언트와 서버는 클라이언트의 내부적 인 상황에서 실행되기 때문에 GeoIP가 모든 해결 데이터를 제공 할 수 있다고 생각하지 않습니다. 그러나 응답 시간에 감사드립니다! – MarkL

+0

알겠습니다. 이 경우 내 대답에 설명 된 방법을 사용하여 클라이언트의 IP 주소를 얻을 수 있지만 특정 위치에 매핑 할 수있는 환경 별 코드를 작성해야합니다. 아마도 IP 서브넷, 역방향 DNS 레코드 또는 Active Directory 구조 (세션 메타 데이터에서 클라이언트의 컴퓨터 이름을 가져올 수 있음)를 기반으로 무언가를 하드 코딩해야 할 것입니다.하지만 다시 한번 말하지만, 이는 매우 환경 적입니다. 나 (또는 ​​여기 다른 누군가)가 직접 당신을 도울 수 있는지 모르겠다. –

관련 문제