Единый вход на сайт - PullRequest
       17

Единый вход на сайт

2 голосов
/ 13 декабря 2011

Мне нужна помощь с единым входом.У меня есть siteA.com, для которого требуются учетные данные для входа, когда вы находитесь на SiteA.com, вы можете делать много вещей, и одним из них является доступ к другому приложению siteB.com.Если вы щелкнете на опцию, чтобы перейти к этому другому приложению, у другого приложения также будет экран входа в систему, учетные данные которого совпадают с , как и у siteA.com, так что siteA.com и siteB.com имеют экраны входа в своивладелец с теми же учетными данными.

Я пытаюсь сделать его единым входом. Есть ли возможность удаленного входа или передачи учетных данных с siteA.com на siteB.com?

Мне интереснов: Решена точно такая же проблема (собственно и для 4 доменов).Единственное решение, которое я предложил, заключалось в том, чтобы включить 3 скрытых фрейма на «странице успешного входа в систему», и эти фреймы просто загрузить www.domain1.com/register_session.php, www.domain2.com/register_session.php и т. Д....

В качестве параметра для register_session.php я использую 'sid', который содержит идентификатор сеанса:

session_id($_GET['sid']);
session_start();

Это фактически для поддержания сеанса во всех этих доменах, но то же самоебыть для вашего случая с куки.

Я думаю, что это может сработать, но проблема в том, что учетные данные, как я могу сделать сценарий входа на сайт siteB.com?

Я сделал что-то, что KINDиз работ ... Я скопировал HTML-код siteB.com и добавил, что скрытый в siteA.com и siteA.com сделал двойной POST, один для входа на siteA.com, а другой для входа на siteB.com.Это работает, только если пользователь недавно зашел на siteB.com, и я думаю, что при входе на siteB.com он устанавливает cookie для контроля доступа, поэтому двойное POST позволяет обмануть систему входа в систему и до тех пор, покапредоставлены учетные данные, что он успешно получает cookie для входа в систему, что позволяет вам войти в систему.

Ответы [ 3 ]

1 голос
/ 13 декабря 2011

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

Читайте здесь .

1 голос
/ 13 декабря 2011

Сохраните информацию о пользователе в файле cookie (например, идентификатор пользователя в базе данных), а затем на странице входа найдите этот файл cookie.если он существует и является действительным пользователем, войдите в него и войдите в систему.

При создании файла cookie вы должны иметь возможность установить его домен в домен siteB.com, чтобы siteB.com мог его видеть.,Просто создайте один файл cookie для каждого домена, который должен быть в состоянии прочитать этот файл cookie, и установите приемлемые параметры истечения срока действия для каждого файла cookie, чтобы они истекали либо в конце сеанса, либо через x дней.

В зависимости от того, насколько вы защищеныВозможно, вам понадобится установить какую-то защиту, чтобы кто-то не мог просто создать свой собственный файл cookie для свободного доступа (например, шифрование)

0 голосов
/ 13 декабря 2011

Мне однажды приходилось решать аналогичную проблему.В итоге я добавил хеш к строке запроса URL-адреса любой ссылки [или формы], переходящей с SiteA на SiteB, и наоборот.Я использовал MD5 хэш идентификатора пользователя в базе данных для значения.На обоих сайтах, если этот хеш присутствует в $ _GET, войдите в систему с помощью поиска для "MD5 (user_id) =?"вместо поиска по имени пользователя и паролю.

Редактировать: Заметьте, это не очень безопасное решение - просто оно оказалось идеальным для того, чего я пытался достичь.Пожалуйста, помните о безопасности.В моем посте выше злоумышленник мог потенциально определить, что токен является хешем MD5 целого числа, и начать с ним возиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...