ip+mac авторизация пользователей на внутреннем сайте локальной сети

Тема в разделе "Программирование", создана пользователем PanAndrey, 20.03.2011.

  1. PanAndrey
    Offline

    PanAndrey Недавно здесь

    Регистрация:
    19.03.2011
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Доброго времени, уважаемые разработчики!
    Надеюсь на вашу помощь, мне нужен плагин или компонент для автоматической авторизации пользователей по ip+mac на внутреннем сайте локальной сети.

    Картина такая: есть локальная сеть с сервером прокси (распознаёт клиентов по ip+mac) и веб-сервером (апач),с сайтом на joomla и доступом к нему с интернет. контролера домена нет и не нужно.
    Мне нужно сделать автоматическую авторизация пользователей из локальной сети.

    Интересует такой вариант: определение ip и мас и сравнение их с добавлеными к таблицам пользователей в б.д. в случае совпадения - авторизация конкретного пользователя, несовпадение - ничего (отображается форма ввода логина и пароля)

    Что посоветуете? где копать..
    Прийму комерческие предложения тоже.
    заранее спасибо:)


    Пытался частично реализовать задачу с помощью плагина SSO - IP
    но он неумеет определять mac, и вобщё чёто не складывается у меня с ним:(
     
    Последнее редактирование: 20.03.2011
  2.  
  3. sergiks
    Offline

    sergiks специалист

    Регистрация:
    10.10.2010
    Сообщения:
    362
    Симпатии:
    36
    Пол:
    Мужской
    Привет!
    Про авторизацию по mac-адресу лучше забыть. MAC известен только самому компу и роутеру, с которым тот непосредственно законтачен. Все. Далее он не передается. Полагаться на JavaScript на стороне клиента, который будет определять его mac и "честно" передавать — дело ненадежное.
    Можно, наверное, извратиться, и заставлять сервер залезать телнетом на роутеры, чтобы сливать оттуда arp таблицу раз в 5 минут, но я бы от такой оргии отказался.
    А в остальном, авторизацию можно делать плагином, который будет смотреть ip законнекченного клиента, и если тот "в обойме", пускать его.
    Если ip у одного клиента каждый раз может быть разный, то тут облом.. И вообще, это ненадежно - однозначно идентифицировать посетителя только по его IP - дождаться, пока оригинальный комп выключат, и законнектиться с его IP - и ты в сети и при правах - слабовато..

    К серверу клиенты, выходит, коннектятся через проксю, или напрямую, раз это локалка? Можно было бы на проксе что-то накрутить, чтобы она умно приписывала какой-то хэш ко всем запросам по внутр. сети — передавала по сути эту инфу про ip и mac. В заголовках запроса. Тут есть лучик надежды..
     
  4. PanAndrey
    Offline

    PanAndrey Недавно здесь

    Регистрация:
    19.03.2011
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Повторю: сайт работает на компе в месте с прокси сервером который аутентифицирует машини из локальной сети (без роутеров) по статическому ip (типа 192.168.0.X) и ранее зарегистрированому MAC для того чтоб пускать их в интернет и вести по ним статистику. к сайту можно получить доступ по http://192.168.0.1 (или нетбиос имя, или http://внешний.статический.айпи.адрес) а с интернета только http://внешний.статический.айпи.адрес
    ещё есть такой скрипт:
    Код (PHP):
    1. <?php
    2.  
    3.   if (getenv('HTTP_X_FORWARDED_FOR')) {
    4.       $testip = getenv('HTTP_X_FORWARDED_FOR');
    5.   } else {
    6.       $testip = getenv('REMOTE_ADDR');
    7.   }
    8.  
    9.   $mac = get_macaddr($testip);
    10.  
    11.   if ($mac !== false) {
    12.       echo "Для IP ".$testip." MAC=".$mac;
    13.   } else {
    14.       echo "Для IP ".$testip." MAC ОПРЕДЕЛИТЬ НЕ УДАЛОСЬ ";
    15.   }    
    16.  
    17. function get_macaddr($ip) {
    18.  
    19.   $mac = false;
    20.   exec("arp -a ".$ip, $retvars);
    21.  
    22.   for ($i=0; $i< count($retvars);$i++) {
    23.      if ($i == count($retvars)-1) {
    24.          list($t_ip, $mac, $t_type) = sscanf(strtoupper($retvars[$i]),"%s %s %s");
    25.      }
    26.   }
    27.  
    28. if (strlen ($mac) !== 17) {
    29.      $mac = false;
    30. }
    31.  
    32.   return $mac;
    33. }
    34.  
    35. ?>


    и есть такойже для определения сервером.
    нужно написать модуль для автоматической аутентификации пользователей из локальной сети на основе аналогичного php плагина и полей с mac и ip в таблице users базы данных.
     
  5. sergiks
    Offline

    sergiks специалист

    Регистрация:
    10.10.2010
    Сообщения:
    362
    Симпатии:
    36
    Пол:
    Мужской
    Посмотрите /plugins/authentication/example.php — это заготовка плагина аутентификации.
    Внутри plgAuthenticationExample() надо проверить переменные сервера - IP и Mac, если его "видно",
    сверить с таблицей, где хранится соответствие ip и id пользователей, и авторизовать соотв. пользователя.
     
  6. PanAndrey
    Offline

    PanAndrey Недавно здесь

    Регистрация:
    19.03.2011
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    sergiks, если б я шарил php, я бы не морочил никому голову на етом форумеB)
    если можеш мне помочь с модулем и таблицей - скажи,
    яже сказал- с коммерческими условиями согласен!:)
     
  7. sergiks
    Offline

    sergiks специалист

    Регистрация:
    10.10.2010
    Сообщения:
    362
    Симпатии:
    36
    Пол:
    Мужской
    С радостью, но не раньше, чем через неделю смогу взяться.
     
  8. PanAndrey
    Offline

    PanAndrey Недавно здесь

    Регистрация:
    19.03.2011
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    спасибо, как только найдёш время свяжись.
     

Поделиться этой страницей

Загрузка...