Реализация SSO с Django Auth. Это безопасно? - PullRequest
3 голосов
/ 04 июля 2011

Я пытаюсь реализовать единый вход с использованием только аутентификации django.

Предположим, что два проекта django находятся на разных поддоменах: site.com (auth) и app1.site.com (app1).) Таблица авторизации на site.com является главной.site.com обрабатывает: вход в систему, выход из системы, регистрацию учетной записи и т. д.

site.com устанавливает для SESSION_COOKIE_DOMAIN значение .site.com, чтобы разрешить его чтение поддоменами

app1 будет иметь логин_урл, установленный напредставление в проекте app1, которое выполняет следующее:

  • извлекает значение session_id для сайта.com (из файла cookie)
  • проверяет идентификатор сеанса, отправляя запрос на: site.com/validate/ [session_id] /
  • Если False, перенаправляет на site.com/login?next=[...]
  • Если True, запросить данные пользователя по адресу: site.com/attributes/ [session_id] /
  • site.com / attribute / предоставляет словарь со всеми значениями пользователя, зашифрованные с использованием общего SSO_KEY (шифрование выполняется так же, как django кодирует и декодирует session_id)

Теперь app1 имеет модель SSO_User, которая имеет два поля: внешний ключ для пользовательской модели и целочисленное поле.Модели SSO_User связывают локального пользователя Auth с идентификатором главной таблицы auth.

Используя идентификатор, полученный с site.com, мы проверяем SSO_User для существующего локального пользователя, если true, мы просто обновляем значения и входим в систему;если он не существует, мы создаем пользователя и SSO_User и выполняем вход.

app1 (или любой другой поддомен) может сохранять информацию своего профиля, не мешая никому.

Кажется, что простореализовать и безопасно, но перед внедрением я хотел бы получить некоторые мнения.Что ты думаешь?

1 Ответ

0 голосов
/ 15 января 2012

Я не претендую на звание эксперта по веб-безопасности, но в прошлом я делал нечто подобное. До тех пор, пока вы правильно настроите домен cookie (как вы утверждаете), я не вижу никаких проблем с безопасностью, тем более что оба сайта находятся в одном домене.

Если вы действительно хотите быть в безопасности, я полагаю, вы могли бы создать свой собственный портал OAuth или что-то подобное, но, откровенно говоря, это кажется излишним.

...