Могут ли два разных клиента как-то делиться файлами cookie? - PullRequest
2 голосов
/ 25 июня 2009

Вот установка: У меня есть серверное приложение. Итак, все данные находятся на сервере (назовите его сервером «A»), и пользователи подключаются к этому серверу с помощью настольного расширенного клиента. Богатый клиент также позволяет пользователю подключаться к другому серверу (назовите его «X»), который совершенно не связан с сервером A.

Вопрос: Пользователь вошел на сервер «X» с помощью расширенного клиента, и поэтому расширенный клиент имеет право на использование cookie-файла для аутентификации на сервере X. Теперь пользователь выполняет вызов на сервере A, который требует от сервера A выйти и получить некоторые данные. данные с сервера X. Можно ли каким-то образом обойти наличие сервера A для аутентификации на сервере X, учитывая, что расширенный клиент уже прошел аутентификацию на сервере X. Есть ли какой-то способ поделиться файлом cookie (с сервером A, выступающим в качестве второго клиента)? Или каким-то образом вернуть запрос аутентификации сервера A на прямой сервер X расширенному клиенту и разрешить его в отношении файла cookie в расширенном клиенте. Кстати, мы используем Apache HttpClient.

Я не очень хорошо осведомлен о взаимодействии с сервером, но я пытаюсь оценить, насколько легко / сложно или распространено / редко это сделать что-то подобное. Можно ли сделать это безопасным способом?

Ответы [ 2 ]

1 голос
/ 25 июня 2009

На базовом уровне все HTTP-сообщения представляют собой текстовые данные, передаваемые между клиентом и сервером. Итак, если вы извлекли файлы cookie из ответа Server X и передали их в запросе на сервер A, то, пока A понимает, что нужно извлечь данные cookie и вставить файлы cookie в новый запрос к серверу X, вы добьетесь успеха в достижения того, что вы просите.

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

Однако ... многие серверы становятся более умными в отношении атак на подделку запросов, и тот факт, что удаленный хост, IP-адрес клиента и т. Д. Различаются, может сделать запрос недействительным или, по крайней мере, вызвать тревогу на сервере X. Поэтому тщательно протестируйте все тесты / stage / prod платформы, прежде чем делать какие-либо общие предположения о жизнеспособности стратегии.

0 голосов
/ 25 июня 2009

Если вы контролируете поведение «богатого клиента», тогда да, конечно. Просто посмотрите, какие куки у вас есть для сервера, к которому вы собираетесь получить доступ, если он включает ваши куки-файлы отслеживания входа в систему, которые вы установили, если нет, посмотрите куки-файлы для другого сервера и скопируйте любой куки-файл отслеживания входа пользователя, который вы добавьте туда, если он существует, в пул файлов cookie для запроса, который вы собираетесь сделать для этого сервера.

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

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

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