Client-zu-Server-Authentifizierung in C ++ über Sockets

Ich implementiere ein Anmelde- / Authentifizierungssystem für mein kleines Server-Client-Programm. Ich frage mich, wie ich vorgehen soll, und ich hatte gehofft, wie immer einige großartige Tipps / Ratschläge von Stack Overflow zu erhalten. So stelle ich mir das vor.

Der Client stellt eine Verbindung zum Server her.Der Server sendet ein 'Token' an den Client (basierend auf der Zeit wahrscheinlich und was auch immer)Der Client gibt den Benutzernamen und ein sha1-verschlüsseltes Passwort zusammen mit dem Token zurück.Der Server empfängt sie und authentifiziert den Benutzer anhand der Anmeldeinformationen in der serverseitigen Datenbank.Das Token ist nun verifiziert und der Benutzer ist mit dem Token angemeldet.

Ist das überhaupt ein sicherer Weg, es zu tun? Ich nahm an, dass der Client auch einen seriellen Schlüssel oder einen solchen sendet, um ein Serien- / Token-Paar zu bilden, sodass ein anderer Client nicht dasselbe Token fälschen kann (obwohl das Token vom Server generiert wird).

Implementierungsdetails sind nicht erforderlich, da ich in der Lage bin, die Implementierung durchzuführen.

Meine Frage wäre eher zwei Fragen:

Welche Möglichkeiten gibt es, um ein Anmelde- / Authentifizierungssystem mit Sockets zu erreichen?Welche Möglichkeiten gibt es, um meine Client-Server-Verbindung zu sichern?BEARBEITEN: Ich habe vergessen zu fragen, da dies eine C ++ - Frage ist. Gibt es Bibliotheken, die bei der Verschlüsselung / Authentifizierung helfen können?

Sicherheit ist ein Problem für mich, deshalb möchte ich sichergehen, dass ich es richtig mache.

Vielleicht ein paar Hintergrundinformationen. Es ist ein Spieleserver, eine Person meldet sich mit ihrem Konto an und wird in eine "Lobby" geführt, wo sie einen "Weltserver" zum Spielen auswählen kann. Der Weltserver ist ein separater Prozess, der (möglicherweise) auf einem anderen Computer im selben Netzwerk ausgeführt wird.

Aus diesem Grund möchte ich ein Konzept für eine Sitzung haben, bei der sich der Benutzer anmeldet und eine Sitzung generiert wird. Der Anmeldeserver leitet die Sitzung an den vom Benutzer ausgewählten Weltserver weiter, sodass der Weltserver weiß, dass der Benutzer tatsächlich angemeldet ist eingeloggt.

Ich gehe davon aus, dass der Client die Sitzung gegenüber dem World Server bestätigen muss, aber ich werde mich später darum kümmern.

Mit freundlichen Grüßen,Jesse

Antworten auf die Frage(2)

Ihre Antwort auf die Frage