Буду признателен за любые мысли / идеи, которые могут возникнуть у любого из вас по этому поводу ...
У меня есть два домена, на которых запущены одни и те же приложения, например mysite.com и mysite.org, и у меня есть требование, чтобы, когда пользователь входит в mysite.com, он также должен был войти в mysite.org. Очевидно, я не могу установить cookie в другом домене, но я хочу найти разумное, безопасное решение. Я думаю, что у меня есть решение (на бумаге), но я просто хотел бы получить отзыв о том, как его улучшить и обезопасить.
Моя таблица сессий сейчас выглядит так:
id: auto-incrementing; only used for by ActiveRecord
uuid: Universally Unique Identifier used for session lookup
user_id: the user this session belongs to
user_ip_address: the user's IP address
created_at: self-explanatory
updated_at: self-explanatory
Моя текущая логика аутентификации на одном домене:
- Пользователь пытается получить доступ к mysite.com/some_protected_info; они не проходят проверку подлинности, поэтому они перенаправляются на страницу входа (реферальный URL-адрес хранится в файле cookie)
- Пользователь успешно проходит аутентификацию на mysite.com; сеанс создается в БД; создается файл cookie для mysite.com; пользователь перенаправляется на URL-адрес реферала в файле cookie, т.е. mysite.com/some_protected_info.
Моя предложенная логика для аутентификации на двух доменах:
- Пользователь пытается получить доступ к mysite.com/some_protected_info; они не прошли проверку подлинности, поэтому они перенаправляются на страницу входа (реферальный URL-адрес хранится в файле cookie)
- Пользователь успешно проходит аутентификацию на mysite.com; сеанс создается в БД; создается файл cookie для mysite.com; Затем пользователь перенаправляется на mysite.org, например mysite.org/login/special
- Специальное действие контроллера входа просматривает сеанс, определяет его действительность, устанавливает cookie на mysite.org и перенаправляет обратно на другое действие контроллера на mysite.com.
- Учитывая, что пользователь прошел аутентификацию на mysite.com (и, вероятно, mysite.org), пользователь будет перенаправлен обратно по реферальному URL (mysite.com/some_protected_info).
Примечание:
- Оба сайта используют SSL.
- На обоих сайтах используется один и тот же код (экземпляры mongrel) - конфигурация Apache делает его доступным через разные домены, то есть параметры config.action_controller.session на обоих доменах абсолютно одинаковы.
Вопросы:
В (2) я должен передать UUID через SSL или это проблема безопасности? Должен ли я генерировать новый, случайный, временный идентификатор для поиска сеанса?
В (3) я должен передавать реферальный URL (mysite.com/some_protected_info) или безопасно просто перенаправить обратно к значению cookie на mysite.com?
Есть какие-нибудь ошибки? Особые ситуации, которые я пропускаю?