Единый вход по нескольким доменам
Наша компания имеет несколько доменов, настроенных на одном веб-сайте, размещенном на каждом из доменов. В настоящее время каждый домен имеет свою собственную аутентификацию, которая осуществляется через файлы cookie.
Когда кто-то, подключенный к одному домену, должен получить доступ к чему-либо другому, пользователю необходимо снова войти в систему, используя разные учетные данные на другом веб-сайте, расположенном в другом домене.
Я думал о том, чтобы перейти к единому знаку (SSO), чтобы эта проблема могла быть устранена. Я был бы признателен за любые идеи о том, как это может быть достигнуто, поскольку у меня нет никакого опыта в этом отношении.
Спасибо.
Edit:
Веб-сайты представляют собой интернет-сайты (внешние) и интранет (внутренние, используемые внутри компании).
Ответы
Ответ 1
Решение SSO, которое я выполнил, работает следующим образом:
- Существует мастер-домен, login.mydomain.com с script master_login.php, который управляет входами.
- Каждый клиентский домен имеет script client_login.php
- Все домены имеют общую базу данных сеансов пользователей.
- Когда домен клиента требует, чтобы пользователь вошел в систему, он перенаправляется в основной домен (login.mydomain.com/master_login.php). Если пользователь не выполнил вход в мастер, он запрашивает аутентификацию у пользователя (т.е. Отображает страницу входа в систему). После аутентификации пользователя он создает сеанс в базе данных. Если пользователь уже прошел проверку подлинности, он ищет свой идентификатор сеанса в базе данных.
- Главный домен возвращается в домен клиента (client.mydomain.com/client_login.php), передавая идентификатор сеанса.
- Клиентский домен создает куки файл, хранящий идентификатор сеанса от ведущего. Клиент может узнать зарегистрированного пользователя, запросив общую базу данных, используя идентификатор сеанса.
Примечания:
- Идентификатор сеанса - это уникальный глобальный идентификатор, сгенерированный с помощью алгоритма из RFC 4122
- Мастер_login.php будет перенаправляться только доменам в свой белый список
- Мастер и клиенты могут находиться в разных доменах верхнего уровня. Например. client1.abc.com, client2.xyz.com, login.mydomain.com
Ответ 2
Не изобретайте колесо. Существует множество открытых межсетевых пакетов единого доступа с открытым исходным кодом, таких как JOSSO, OpenSSO, CAS, Shibboleth и другие. Если вы используете технологию Microsoft по всему миру (IIS, AD), вы можете использовать федерацию microsoft (ADFS).
Ответ 3
Чем отличаются имена хостов?
Эти хосты могут совместно использовать файлы cookie:
- mail.xyz.com
- www.xyz.com
- logon.xyz.com
Но они не могут:
- abc.com
- xyz.com
- www.tre.com
В первом случае вы можете отключить решение на основе файлов cookie. Подумайте, GUID и таблица сеансов базы данных.
Ответ 4
Если вы используете Active Directory, вы можете использовать для каждого приложения AD для аутентификации, логин может быть бесшовным.
В противном случае, если приложения могут разговаривать друг с другом за кулисами, вы можете использовать sessionids и иметь одно приложение для обработки приложений, обслуживающее все ваши другие приложения.