Аутентификация клиента на сервер в C ++ с использованием сокетов
Я внедряю систему входа в систему / аутентификации для моей маленькой программы сервер-клиент. Мне интересно, как это сделать, и я надеялся получить отличные советы / советы от Stack Overflow, как всегда. Вот как я представляю, что я это сделаю.
Client connects to the server. Server sends a 'token' to the Client (based on time probably and whatever) Client returns the username and a sha1 encrypted password, along with the token. Server receives them and authenticates the user to the credentials in the server-side database. The token is now verified and the user is signed in with the token.Это вообще безопасный способ сделать это? Я полагал, что клиент также отправляет серийный ключ или что-то подобное, чтобы сформировать пару последовательный / токен, чтобы другой клиент не мог подделать тот же токен (хотя токен генерируется на стороне сервера).
Детали реализации не требуются, так как я способен выполнить реализацию.
Мой вопрос, скорее, два вопроса:
What ways are there to achieve a login/authentication system with sockets What ways are there to secure my client-to-server connection EDIT: I forgot to ask, as this is a C++ question, are there any libraries that can assist in encryption/authentication?Безопасность - это проблема для меня, поэтому я хочу быть уверен, что все делаю правильно.
Возможно некоторая справочная информация. Это игровой сервер, человек входит в систему со своей учетной записью и попадает в «лобби», где он может выбрать «World Server». играть дальше. Мировой сервер - это отдельный процесс, работающий (возможно) на другом компьютере в той же сети.
По этой причине я хочу иметь концепцию сеанса: пользователь входит в систему и генерирует сеанс, сервер входа передает сеанс на мировой сервер, который выбирает пользователь, чтобы мировой сервер знал, что пользователь на самом деле авторизовался
Я считаю, что клиент должен будет подтвердить сеанс на мировом сервере и все такое, но я буду беспокоиться об этом позже.
С уважением, Jesse