Я создаю игровой сервер, похожий на покер, я собирался обрабатывать все логины и игровую логику на одном сервере, но из моих исследований в Интернете я узнал, что это не масштабируется, и было бы целесообразно разделить работа в логин и игровые серверы. Но что я не получаю, так это после того, как я обработал аутентификацию на сервере входа в систему и заставил клиента установить новое соединение с игровым сервером, как бы я узнал, какой клиент какой? Разве мне не придется повторно входить в систему и, таким образом, победить цель наличия сервера для входа? Есть ли способ передать соединение между процессами и машинами, о которых я не знаю? Извините, мои небольшие знания о сети.
server
authentication
user342580
источник
источник
Ответы:
Хотя ответ Филиппа совершенно хороший, есть немного другой способ, который не требует соединения между сервером входа в систему и игровым сервером, что полезно, если такое соединение затруднено.
Это работает, потому что:
Или, проще говоря, хеш гарантирует, что отправителю почти невозможно подделать свой токен входа в систему и, таким образом, информации в токене можно доверять.
Как и в случае любого хэширования, ориентированного на безопасность, используйте лучшую хеш-функцию, которую вы можете получить - в данный момент людям, похоже, нравятся bcrypt, PBKDF2 и scrypt, - и убедитесь, что ваш секретный ключ очень длинный, чтобы сделать перебор практически бесполезным.
источник
После того, как пользователь аутентифицировался на сервере входа в систему, присвойте ему токен (уникальную, случайно сгенерированную строку, слишком длинную, чтобы угадать).
Loginserver выбирает игровой сервер. Отправьте токен, имя пользователя и все другие соответствующие данные о пользователе с сервера входа на выбранный сервер.
Отправьте токен и имя хоста игрового сервера клиенту. Затем отключите его от логина-сервера.
Затем клиент подключается к игровому серверу со своим именем пользователя и токеном.
Когда токен от клиента совпадает с токеном, только что сообщенным сервером входа в систему, вы принимаете его.
Обратите внимание, что для обеспечения безопасности токены должны быть созданы из криптографически безопасного генератора случайных чисел, каждый токен может быть принят игровым сервером только один раз, а неиспользованные токены должны быть сброшены через несколько минут.
источник