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