Если требуется авторизация пользователя Сервисом либо самим пользователем инициируется следующая последовательность:
Рисунок 4.4 — Схема формирования базы данных пользователей В целях аутентификации пользователей на ID-Сервере создаётся база данных пользователей, агрегирующая всех пользователей Сервисов на момент запуска системы. Модификация баз данных пользователей на стороне Сервисов требуется в ограниченном объёме, должна обеспечивать возможность авторизации пользователя по сообщению ID-Сервера без ввода пароля и не должна влиять на структуру базы.
Так как базы данных Сервисов в настоящий момент имеют различные структуры и не имеют единого набора полей, то предполагается объединить структуры баз данных Сервисов на ID-Сервере следующим образом:
Предположим, что в базах данных Сервисов хранятся следующие поля:
Сервис1:
Сервис2:
Сервис3:
Тогда база данных на ID-Сервере должна хранить следующие поля (предполагается идентификация уникального пользователя по полю E-Mail, о разрешении конфликтов в таком подходе см. далее):
|
Login. | E-Mail. | PassHash1. | PassHash2. | PassHash3. |
При этом в том случае, если на нескольких Сервисах существуют пользователи с одним и тем же E-Mail, производится слияние этих записей в одну. Но приоритет остаётся за сервисом НЦР «РУКОНТ». В случае, если пользователь с правами Админ или аналогичными на Сервисе НЦР «РУКОНТ» зарегистрирован c почтовым адресом, конфликтующим с записями в базах данных какого-либо другого Сервиса, остаётся только запись Сервиса НЦР «РУКОНТ» (Конфликтующие записи рекомендуется хранить в отдельной базе данных для разрешения конфликта в ручном режиме).
Пароли пользователей переносятся в базу данных ID-Сервера в неизменном виде (в HASH), об использовании того или иного пароля пользователя спросят при первом визите, то тех пор он сможет зайти по любому из личных паролей, использовавшихся на сайтах Сервисов.