За последние 24 часа нас посетили 17668 программистов и 1597 роботов. Сейчас ищут 1456 программистов ...

Кроссдоменная авторизация

Тема в разделе "Решения, алгоритмы", создана пользователем antonn, 9 фев 2008.

  1. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    А вот ещё вариант,
    пусть сайт авторизации работает с напрямую с БД дочерних сайтов,
    потом просто разово передаёт гетом sid на дочерний сайт
     
  2. klerick

    klerick Guest

    http://www.php.ru/forum/viewtopic.php?t=17862 - здесь некоторые наброски на эту тему, но возникли проблемы, для решения которых и в отдельной теме все написал, чтобы в кучу не валить.

    Вообще уже сделал по другому. Авторизация проходит на поддомене авторизации, где вырабатывается свой id сессии, т.е. всем известный sid. Он в свою очередь передается на нужный поддомен, который при наличии его в GET, выделяет необходимые данные.
    Забыл написать, что особый SID содержит 2 параметра: ID пользователя и некую проверочную последовательность, которая формируется на основе ip, даты, id пользователя и usercode - особые данные, не известные даже самому пользователю и хранящиеся в БД. Проверочная последовательность получается применением функции function GetUserCheck($us_id) в вышеуказанном классе.
    После выделения и проверки данных на поддомене сессии присваивается полученный id, в противном случае номер сессии не меняется и скрипт переходит на скрипт ложной авторизации.
    Преимущества: простота реализации, снижена нагрузка на сервер (после авторизации для проверки не надо ни БД, ни файлов, за исключением сессии, которые в принципе сервер создает автоматически).
    Недостатки: большая сложность реализации кнопки "выход". Сессия на каждом поддомене получается различной, а значит для ее удаления необходимо обойти все домены, где прошла реализация и в каждом удалить. К счастью в моем случае авторизация проходит в один поддомен, но это пока.
    Авторизация и ее проверка осуществлены модификацией вышеуказанного класса. Если он кому-нибудь интересен, то пишите, выложу и напишу подробности.