Может ли веб-сервер войти во внешнее приложение и передать куки в браузер пользователя? - PullRequest
1 голос
/ 27 октября 2010

Я пытаюсь внедрить единый вход для веб-портала. Я написал некоторый код для отправки запроса POST, содержащего учетные данные пользователя для входа во внешнее веб-приложение, для входа в систему пользователя. (Не волнуйтесь, это все по SSL)

HTTP-ответ от веб-приложения содержит cookie для входа пользователя. Возможно ли, чтобы сервер веб-портала передал этот файл cookie браузеру пользователя? Или это невозможно, поскольку веб-приложение находится на другом поддомене? Я понимаю, что в файлы cookie встроены некоторые меры безопасности.

Ответы [ 3 ]

1 голос
/ 27 октября 2010

Краткий ответ: НЕТ.

Сервер HTTP действительно может войти в другой сервис и передать cookie сервиса пользователю, но браузер установит, что домен этого куки - это сервер HTTP, а неудаленный сервис.«Сервер A» в «домене A» не может сделать так, чтобы файл cookie возник из «сервера B» в «домене B».Если бы это было возможно, было бы банально украсть у каждого куки-файлы аутентификации для их банка, Facebook, MySpace и т. Д ...

1 голос
/ 27 октября 2010

Действительно, в современные браузеры встроены междоменные политики.
Однако однажды я создал технологию единого входа для своего собственного веб-сайта.

Есть трюк, который вы можете сделать.Во-первых, на главном сайте, где пользователи имеют свои
данные для входа, им нужно сгенерировать секретный ключС этим уникальным секретным ключом
для каждого пользователя, передавайте их на другой сайт, например

www.abc.com / secret_key

, используя этот секретный ключ, ваш другой веб-сайт сможетизвлеките необходимую информацию
, такую ​​как имя пользователя, изображение профиля и тому подобное, и создайте сеанс в этом
домене.Таким образом, вы создали сеанс для противоположного домена.

Если вам все еще нужно что-то передать обратно, я бы порекомендовал вам пойти так, чтобы
включал RPC поверх PHP, и отправлять что-то обратно в ваш основной домен.

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

Примечание. Безопасность здесь заключается в секретном ключе.Так как это уникальный сгенерированный ключ
, например, хеш md5, это трудно повторить.Так что
нет такой вещи, как кто-то мог бы повторно отобрать секретный ключ, а затем войти на ваш сайт как кто-то
еще.
Вы также должны отметить, что API секретного ключа должен иметь возможность только получите
необходимую информацию , чтобы на другой стороне не было собрано слишком много информации.

0 голосов
/ 27 октября 2010

Зачем изобретать велосипед?Я думаю, что вы можете найти реализации OpenID для PHP.Для потребителя и провайдера.

Вы можете ограничить свои OpenID-логины для своих доменов, только если вы не хотите, чтобы они использовались где-либо еще.

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