Единая идентификация для сайтов
Материал из 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.