Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB59.2470
BTC/USD0.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 03.08.2012, 23:04   #1
underwit
Senior Member
 
Аватар для underwit
 
Регистрация: 17.09.2009
Сообщений: 211
Бабло: $41884
По умолчанию Кроссдоменная авторизация. Подскажите куда копать.

Ломаю голову над решением задачи, подскажите в какую сторону копать.

Цитата:
* Спроектировать систему кросс-доменной авторизации для сети веб-сервисов (аналог passport.yanedex.ru), максимально пользуясь средствами фреймворка Django (но не обязательно ограничиваясь ими)

* Представить набор моделей данных, которые будут использоваться в системе, а также других дополнительных особенностей схемы базы данных, если необходимо

* Представить внутреннее описание работы системы и протоколов взаимодействия главной системы с дочерними веб-сервисами

* Предоставить прототип программы, рассылающей пуш-уведомления дочерним сервисам -- не обязательно.



Условия:



* Веб-сервисы в большинстве своём представляют из себя проекты на фреймворке Django, но могут быть редкие исключения даже на других языках программирования, для которых тоже должна быть возможность испольозвать совместную авторизацию

* Веб-сервисы могут работать на разных серверах, в том числе в разных датацентрах

* Все веб-версисы работают на доменах третьего уровня с общим доменом второго уровня



Требования:



* Веб-сервисы на Django должны пользоваться стандартной системой авторизации Django

* Авторизовавшись на одном веб-сервисе, пользователь должен быть автоматически опознан остальными, когда он зайдёт на них

* По умолчанию страницы веб-сервисов должны быть доступны только авторизованному пользователю

* Некоторые страницы веб-сервисов могут быть доступны без авторизации при явном указании на это

* Разлогинившись на одном веб-сервисе, пользователь должен мгновенно терять доступ ко всем остальным

* Список пользователей и групп, информация о членстве пользователей в группах, а также набор произвольных Django-моделей должны синхронизироваться в одностороннем порядке на всех сервисах: с главного на остальные, используя server push

* Если в момент серверного пуша веб-сервис был недоступен, изменение не должно потеряться, а, возможно, прийти вместе со следующим

* Подключение нового сервиса на Django к системе общей авторизации должно быть связано с минимальным и максимально простым набором действий (установка модуля, добавление приложения в настройках и т.

п.)

* Главный сервис должен иметь api для получения списка синхронизируемых объектов (пользователей, групп, заданных

Django-моделей)
Интересует именно авторизация пользователей и синхронизация данных между главным сайтом и дочерними сервисами.

Заранее спасибо.
underwit вне форума  
Старый 04.08.2012, 01:53   #2
Venya Tolinov
Senior Member
 
Аватар для Venya Tolinov
 
Регистрация: 24.11.2010
Сообщений: 229
Бабло: $52840
Отправить сообщение для Venya Tolinov с помощью Skype™
По умолчанию

Вообщем вариант конечно не единственный, но самый обычный, так же или очень похоже в гугле.

После авторизации (разовое событие) на сервисе хранится кука подписанная секретным ключём из ид пользователя и даты создания/обновления. Когда он приходит с другого сервиса, распознаётся кто пришёл и сверяется залогинен ли он. Если нет, то предлагается залогинится.

Если пользователь ещё не авторизован на этом сервисе, отправляется в авторизационный сервис, и после успешной процедуры по данным из урла обратно, и из того же урла берётся кука и сохраняется. В этом случаее процедура логина и авторизации совмещена.

"Все свои" знают что зашёл авторизованный пользователь. Если он не разлогинелся то сессия через какое-то время закончится (дата в куке устареет). Пока пользователь лазит по сервису дату в куке можно править, но саму куку не удалять.

Авторизационные данные при этом хранятся централизованно и обращаться к ним надо по другому каналу. Для этого не надо изобретать велосипед https://developers.google.com/bigquery/.

А в Джанго делаешь обёртку-суперкласс, который подобные ситуации разруливает. Как-то так.
__________________
Amazon Graffiti - монетизация страниц в Facebook

Последний раз редактировалось Venya Tolinov; 04.08.2012 в 02:01.
Venya Tolinov вне форума