2014-10-11 2 views
0

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

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

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

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

ответ

0

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

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

Смежные вопросы