Перенос сеанса клиента с одного сервера на другой

У меня есть логин пользователя на главный сервер с PHP-приложением, которое служит многочисленным целям. Я хочу иметь совершенно отдельное приложение на полностью отдельном веб-сервере с полностью отдельной базой данных, но я не хочу, чтобы пользователю приходилось входить в систему отдельно, а скорее использовать тот же сеанс аутентификации, который был выполнен на главном сервере, и переносите их, по существу перенося их на другой сервер. Какова наилучшая практика, обнаруженная в отрасли для передачи зарегистрированного пользователя с одного сервера на другой без их входа в систему снова?

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

Я думал о том, что исходный сервер отправляет серверу назначения секретное сообщение с просьбой ввести временный ключ входа, который затем привязывается к URL-адресу целевого сервера, на который отправляется пользователь, и сразу же аннулирует ключ, когда он туда попадает. Должен ли исходный сервер разговаривать с сервером назначения через https API или через ssh?

Я ищу некоторые рекомендации для лучших отраслевых практик для этого процесса.

0
источник поделиться
1 ответ

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

Это довольно безопасно, так как потому, что захват какой-либо сессии таким образом потребовал бы, чтобы они угадали как id, так и хеш в тот момент, когда происходит один знак. Даже этот очень крошечный шанс этого события можно смягчить, сохранив также дату передачи состояния и аннулировав ее через 30 секунд или около того.

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос