Единый вход по нескольким доменам

Наша компания имеет несколько доменов, настроенных на одном веб-сайте, размещенном на каждом из доменов. В настоящее время каждый домен имеет свою собственную аутентификацию, которая осуществляется через файлы 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 и иметь одно приложение для обработки приложений, обслуживающее все ваши другие приложения.