Назад | Перейти на главную страницу

Двухфакторный механизм для дифференциации пользователей LAN и WAN

Я в ситуации, когда мой клиент хотел бы двухфакторную аутентификацию (например, войти в систему и получить электронную почту с URL-адресом доступа) в соответствии со следующими правилами:

  1. Если пользователи находятся в локальной сети, не требуется двухуровневая аутентификация (учетные данные AD).
  2. Если пользователя нет в локальной сети, требуется двухуровневая аутентификация >> Войдите в систему с именем пользователя / паролем (может быть AD, может быть что-то еще, мы создали собственное решение SSO), а затем получите электронное письмо на указанный mail-adr.

Наша главная проблема в том, что сложно понять, откуда пришел пользователь. Причиной этого является ISA-сервер спереди, который в основном удаляет всю информацию о клиенте. Информация, полученная на ISS, где выполняется приложение, возвращает адрес сервера ISA в информации CLIENT_IP.

Итак - как мы можем определить, откуда пришел пользователь, когда весь трафик проходит через один и тот же ISA-сервер?

Одно из решений заключалось в создании ресурса, доступного только из LAN, и в основном заявлении: «Если вы не можете получить доступ к этому ресурсу, вы де-факто не находитесь в LAN». Однако - это опять же может повлиять на тайм-ауты - например, «попробуйте найти ресурс, но время ожидания истечет через 3 секунды». Это может замедлить работу приложения, и у нас может возникнуть проблема, поскольку несколько сотрудников работают из других частей мира, где линии плохие, когда дело доходит до доступа к производственным серверам (например, люди в локальной сети, обращающиеся к серверам по фиксированной линии, могут испытывать не доходят до ресурса, даже если они действительно находятся в локальной сети).

Я задал этот вопрос и о stackoverflow, но решение как бы зависло, когда мы узнали, что сервер ISA удалил всю информацию.

(Я предполагаю, что эта статья резюмирует источник моей проблемы: http://www.redline-software.com/eng/support/articles/isaserver/security/x-forwarded-isa-track.php)

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