Междоменные куки

У меня небольшая проблема.

Как мне установить cookie для нескольких доменов?

Я понимаю проблемы безопасности, и я уверен, что это было сделано раньше. Причиной этого является SSO.

то есть.

account.domain.com нужно будет настроить домен для входа в систему:

domain.com, domain1.com, domain2.com.

Есть ли простой способ, используя PHP и куки, или какие-либо альтернативы?

 inorganik02 сент. 2011 г., 20:14
Вот еще один пост о stackoverflow, который показывает, как это делает Facebook, и да, это возможно с помощью iframes и javascript.stackoverflow.com/questions/4701922/…
 hakre22 июн. 2012 г., 13:46

Ответы на вопрос(4)

Я думаю, что это решение подойдет вам: & quot;Простой единый вход в PHP& Quot;

Решение Вопроса

Для domain.com нет абсолютно никакого способа установить cookie для domain1.com. То, что вы пытаетесь сделать, может быть решено, только если браузер пользователя отправит запросы каждому домену, который затем установит свой собственный файл cookie.

Затем для каждого домена требуется способ проверки личности пользователя. Есть два подхода к этому:

Back channel - the sites contact each other directly to determine if a user is logged in. Passing a token in the GET or POST - when the user's broweser is redirected to the other site a digitally signed parameter is passed containing the identity and session status.

Это действительно довольно сложно. Я предлагаю вам не кататься самостоятельно. Взгляни наSimpleSAMLPHP для реализации PHP того, что я описываю.

 26 апр. 2016 г., 17:31
Вот еще один способ: заставить domain.com соединиться с domain1.com и получить токен, затем передать этот токен в заголовок вызовов JS или в качестве отдельного поля, после чего domain1.com должен проверить этот токен и ответить соответствующим образом. Имеет ли это смысл?

Это может быть сделано через один домен, действующий как хозяин, а другие как раб.

Скажем, у нас есть домен account.domain.com, и это наш мастер.

Тогда у нас есть наши рабыdomain.com, something.com а такжеanother.com

Когда вы войдете на domain.com, это будет фактически сайтaccounts.domain.comзатем вы получите cookie-файл с уникальным идентификатором для вашего браузера, а затем вы будете перенаправлены на целевую страницу домена после входа в систему (т. е.domain.com/logon?check=true&unique-id=<browser unique id>&request-id=<unique request ID>). целевая страница свяжется сaccounts.domain.com, запрашивая его с идентификатором браузера. Если с транзакцией все в порядке, вы получите файл cookie для входаdomain.com.

Далее на каждом домене (domain.com, something.com а такжеanother.com) будет первоначальным перенаправлением наaccounts.domain.com/roaming-check?return-url=<URL the redirect was initiated from>, Потому что мы возвращаемся домой (мы уже вошли в системуaccounts.domain.com) мы снова будем перенаправлены на целевую страницу (<domain name>.com/logon?check=true&unique-id=<browser unique id>&request-id=<unique request ID>) и с этого момента она такая же, как часть с входом в систему. Мы беспрепятственно перемещаемся в другой домен (пользователь не знает об этом, поскольку браузеры обычно не показывают перенаправленную страницу до тех пор, пока она не пройдет раздел заголовков send (server) / receive (browser)).

В случае, если фактически нет активного входа в систему, сайт сохранит этот "отрицательный вход". сеанс и не пытаться проверить вход в систему (пока мы не попытаемся войти или загрузить другой домен).

То, что вы пытаетесь сделать, не может быть сделано. (Это проблема безопасности браузера, а не PHP).

Помимо использования какой-либо формы аутентификации вне сайта, самое близкое, что вы можете сделать, - это сделать куки доступными через субдомены, и в этом случае вы просто используете необязательный «домен» Аргумент PHPset_cookie функция.

Ваш ответ на вопрос