Единая идентификация для сайтов

Материал из Wiki.IRCLine.RU

Перейти к: навигация, поиск

Содержание

Описание

Система единой идентификации позволяет вводить пароль ника только один раз для входа на все сайты, имеющие отношение к IRCLine.RU (как официальные, так и неофициальные). Вместе с информацией о идентификации владельцу сайта доступна некоторая информация о нике. В настоящий момент доступно:

  • номер ника;
  • ник;
  • дата регистрации ника;
  • привязанный к нику идентификатор (если есть).

Вся эта информация о нике может быть получена из открытых источников (по команде /NS INFO Ник).

Безопасность

Данная система является безопасной для пользователя:

  • Пароль от ника вводится только на сайте http://login.ircline.ru.
  • Все сайты являются независимыми: если один сайт будет взломан, либо владелец сайта захочет недобросовестно использовать получаемые им данные о сессии, то это не позволит получить доступ к нику в IRC либо к другим сайтам.
  • Всё взаимодействие между сайтами защищено от посторонних вызовов т.к. каждый запрос сопровождается контрольной последовательностью, которая формируется с использованием пароля сайта, доступного только администратору сайта.
  • Ведётся журнал всех действий и проверок идентификации.

Порядок использования (для пользователя)

Пользователи должны вводить свой ник и пароль ника только на сайте единой идентификации http://login.ircline.ru. На этом же сайте можно просмотреть список открытых сессий для вашего ника и закрыть сессию (выполнить выход).

Для сохранения данных о сессии используются cookies (они должны быть включены в браузере для всех сайтов, которые планирует посещать пользователь).

Порядок использования (для администраторов сайтов)

После получения логина и пароля от администратора сервера единой авторизации владельцу сайта необходимо:

  • установить скрипт setcookie.php, вызываемый для установки и удаления cookies, и сообщить путь к нему администратору сайта единой авторизации;
  • установить скрипт checkid.php, содержащий класс IdInfo, предназначенный для получения данных о идентификации, и настроить сайт для работы с ним.

Создание объекта:

$idinfo = new IdInfo(НомерСайта, ПарольСайта, $_COOKIES['login_ircline_ru'], $_SERVER['REMOTE_ADDR']);

Если по какой-то причине IP-адрес пользователя неизвестен, то не указывайте последний параметр:

$idinfo = new IdInfo(НомерСайта, ПарольСайта, $_COOKIES['login_ircline_ru']);

Также номер сайта, пароль сайта, название файла cookie (в данном примере это login_ircline_ru) нужно установить в файле setcookie.php.

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

Проверить есть ли идентификация у пользователя можно с помощью проверки номера ника. Если нет идентификации, то возвращается 0 (ника с таким номером не может быть).

if ($idinfo->get_nickid() == 0) {
   echo "Пользователь не идентифицирован\n";
} else {
   echo "Пользователь идентифицирован на ник " . $idinfo->get_nick() . "\n";
}

Кодировка символов: UTF-8.

Доступная информация

Данные Метод класса IdInfo и параметры Значение при отсутствии идентификации Примечание
Номер сессии (это не секретный код сессии из cookes, а просто порядковый номер) get_sessid() 0
Номер ника get_nickid() 0
Ник get_nick() Пустая строка ($idinfo->get_nick() == '') Написание ника соответствует тому что было при регистрации ника
Дата и время регистрации get_reg_ts() 0 Локальное время (MSD)
Привязанный к нику идентификатор get_ident() Пустая строка При отсутствии привязанного идентификатора тоже возвращается пустая строка

Файлы

Загрузить скрипты (setcookie.php, checkid.php): Файл:login-ircline-ru-pub.tar.bz2

Порядок подключения сайтов к системе

К системе планируется подключить все официальные сайты IRCLine.RU. Также возможно подключение неофициальных сайтов (сайты IRC-серверов, IRC-каналов), которые имеют сколько-нибудь значимую посещаемость (т.е. их посещает кто-то кроме создателя сайта).

По вопросам подключения сайтов к системе обращайтесь на канал #WWW.

Ссылки

Личные инструменты