* Спроектировать систему кросс-доменной авторизации для сети веб-сервисов (аналог passport.yanedex.ru), максимально пользуясь средствами фреймворка Django (но не обязательно ограничиваясь ими)
* Представить набор моделей данных, которые будут использоваться в системе, а также других дополнительных особенностей схемы базы данных, если необходимо
* Представить внутреннее описание работы системы и протоколов взаимодействия главной системы с дочерними веб-сервисами
* Предоставить прототип программы, рассылающей пуш-уведомления дочерним сервисам – не обязательно.
Условия:
* Веб-сервисы в большинстве своём представляют из себя проекты на фреймворке Django, но могут быть редкие исключения даже на других языках программирования, для которых тоже должна быть возможность испольозвать совместную авторизацию
* Веб-сервисы могут работать на разных серверах, в том числе в разных датацентрах
* Все веб-версисы работают на доменах третьего уровня с общим доменом второго уровня
Требования:
* Веб-сервисы на Django должны пользоваться стандартной системой авторизации Django
* Авторизовавшись на одном веб-сервисе, пользователь должен быть автоматически опознан остальными, когда он зайдёт на них
* По умолчанию страницы веб-сервисов должны быть доступны только авторизованному пользователю
* Некоторые страницы веб-сервисов могут быть доступны без авторизации при явном указании на это
* Разлогинившись на одном веб-сервисе, пользователь должен мгновенно терять доступ ко всем остальным
* Список пользователей и групп, информация о членстве пользователей в группах, а также набор произвольных Django-моделей должны синхронизироваться в одностороннем порядке на всех сервисах: с главного на остальные, используя server push
* Если в момент серверного пуша веб-сервис был недоступен, изменение не должно потеряться, а, возможно, прийти вместе со следующим
* Подключение нового сервиса на Django к системе общей авторизации должно быть связано с минимальным и максимально простым набором действий (установка модуля, добавление приложения в настройках и т.
п.)
* Главный сервис должен иметь api для получения списка синхронизируемых объектов (пользователей, групп, заданных
Django-моделей)
Интересует именно авторизация пользователей и синхронизация данных между главным сайтом и дочерними сервисами.
Заранее спасибо.