Здравствуйте, Aikin, Вы писали:
>Есть набор одинаковых вэб приложений (20+ штук). Кажый сайт принадлежит отдельной компании, но пользователи на них одни и те же.
>Вернее даже не так: один и тот же пользователь может иметь доступ к разным инстанциям (приложениям) исползуя одно и то же имя и пароль.
>Это достигается существованием сайта-координатора (Директория) который занет какой пользователь имеет доступ к какой инстанции, предоставляет сводную информацию со всех инстанций пользователей, синхронизирует изменения в профиле пользователя со всеми инстанциями.
>Так как сайты представляют собой разные приложения, то у них разные сессии (сделать шаред сессию не предлагать -- поломается все нафик). Так что если пользователь залогинен на сайте1, то на сайте2 ему нужно все равно вводить пароль для входа. Вот это-то и бесит пользователей.
Мдя, у меня была похожая задача, только решение с куками не подходило принципиально — ибо сайты находились в разных доменах первого уровня (.ca, .com. net). Как сделалив итоге:
Вынесли форму авторизации в отдельное приложение. При заходе на сайт он редиректит на авторизацию, там проводится авторизация и браузер возвращается на исходный сайт вместе с токеном сессии. Затем этот токен кэшируется в куке, и при повторном заходе сервер через веб-сервис идёт на сервер авторизации и проверяет валидность токена. Если токен невалидный, то юзера отправляют на авторизацию, если валиден — ну тут и так понятно
Сервер авторизации также кэширует токен, и при заходе на другой сайт проекта, будучи авторизованным на первом, приложение авторизации сразу отправляет юзера обратно с токеном.
Кстати, подобным образом работает всем известная Microsoft Passpost. По-моему, решение гораздо более надёжное и изящное, чем шаманство с куками, которое отвалится сразу же, как только возникнет необходимость накрыть SSO (Single Sign-On — так называются подобные системы) домен за пределами вашей доменной зоны...