Безопасная передача пользователей между веб-сайтами
Вот сценарий:
- У вас есть два отдельных сайта, которые существуют в разных средах (разные базы данных IE, разные веб-серверы / домены)
- Вы имеете полный контроль над кодом для обоих сайтов, но, как указано выше, они не могут напрямую взаимодействовать с базой данных друг друга
- Вы должны безопасно перевести пользователя с сайта A на сайт B
Каков наилучший способ реализовать это? Простая отправка идентификатора пользователя между сайтами через строку запроса не будет безопасной, даже если она зашифрована, поскольку URL-адрес может получить кто-то другой. Кажется, что стандартное решение состоит в том, чтобы передать идентификатор пользователя вместе с другим временным ключом, который создал веб-сайт A, и веб-сайт B знает о нем. Если это так, как правильно настроить систему с помощью временного ключа?
Спасибо!
4 ответа
Напишите вызов веб-службы по HTTPS, с обеих сторон, чтобы получить сведения о пользователях, и это работает только для определенной пары входа в систему. Задача решена. Вам нужно сделать одинаковые логины с обоих концов или использовать единый вход для файлов cookie. Подробности в статье Випина Самара: "Единый знак для файлов cookie для веб-приложений".
Они не могут получить URL/ пароли, если не введут код приложения на одном из серверов.
Я делаю что-то вроде этого. Лучшее, о чем я могу подумать сейчас, это передать HASH идентификатора пользователя или, если вас это беспокоит, хеш некоторых других пользовательских данных.
Если вам нужны временные ключи (я мог бы сделать что-то подобное), как насчет настройки веб-службы на A, к которой B может обращаться, чтобы получить идентификатор пользователя на основе временного ключа. Таким образом, это совершенно отдельный вызов, и его можно обеспечить.
Взгляните на " сквозную аутентификацию", это концепция, которая позволяет передавать идентификационные данные пользователя из одной системы в другую.
Кроме того, другая идея, которую вы, возможно, захотите попробовать, - это создать безопасный токен, который не раскрывает информацию пользователя и не передает ее. Однако для этого требуется, чтобы обе системы имели одинаковые данные для проверки токена. Как подсказывает другой ответ, хеши очень полезны для создания неописательных битов о конфиденциальной информации.
Вам необходимо передавать информацию между сайтом A и сайтом B, но вам не нужно делать пользователя каналом передачи этой информации.
Сайт B может иметь веб-сервис, который позволяет сайту A создавать сеанс для пользователя. В этом проекте взаимодействие будет выглядеть следующим образом:
- Пользователь нажимает кнопку на сайте A
- Сайт A вызывает веб-сервис на сайте B, который передает временный URL-адрес входа на сайт A
- Сайт A перенаправляет пользователя на временный URL на сайте B