Uwierzytelnianie klienta na serwer w C ++ przy użyciu gniazd

Wdrażam system logowania / uwierzytelniania dla mojego małego programu klient-serwer. Zastanawiam się, jak sobie z tym poradzić, i miałem nadzieję, że jak zawsze otrzymam wspaniałe porady / porady od Stack Overflow. Tak sobie wyobrażam, że to zrobię.

Klient łączy się z serwerem.Serwer wysyła „token” do klienta (prawdopodobnie na podstawie czasu i tego wszystkiego)Klient zwraca nazwę użytkownika i zaszyfrowane hasło sha1 wraz z tokenem.Serwer odbiera je i uwierzytelnia użytkownika do poświadczeń w bazie danych po stronie serwera.Token jest teraz zweryfikowany i użytkownik jest zalogowany przy użyciu tokena.

Czy to w ogóle bezpieczny sposób na to? Pomyślałem, że klient wysyła również klucz szeregowy lub kilka takich, aby utworzyć parę szeregową / tokenową, tak aby inny klient nie mógł sfałszować tego samego tokena (chociaż token jest generowany przez serwer).

Szczegóły implementacji nie są wymagane, ponieważ jestem w stanie wykonać implementację.

Moje pytanie brzmiałoby raczej na dwa pytania:

Jakie są sposoby osiągnięcia systemu logowania / uwierzytelniania z gniazdamiJakie są sposoby zabezpieczenia mojego połączenia klient-serwerEDYTOWAĆ: Zapomniałem zapytać, ponieważ jest to pytanie C ++, czy są jakieś biblioteki, które mogą pomóc w szyfrowaniu / uwierzytelnianiu?

Bezpieczeństwo jest dla mnie problemem, więc chcę mieć pewność, że robię to dobrze.

Może jakieś podstawowe informacje. Jest to serwer gry, osoba loguje się przy użyciu swojego konta i zostaje przeniesiona do „Lobby”, gdzie może wybrać „World Server” do gry. Serwer światowy to oddzielny proces działający (być może) na innej maszynie w tej samej sieci.

Z tego powodu chcę mieć koncepcję sesji, użytkownik loguje się i generowana jest sesja, serwer logowania przekazuje sesję do serwera światowego, który wybiera użytkownik, aby serwer światowy wiedział, że użytkownik jest rzeczywiście Zalogowany.

Sądzę, że klient będzie musiał potwierdzić sesję na serwerze światowym i tym podobne, ale martwię się o to później.

Z poważaniem,Jesse

questionAnswers(2)

yourAnswerToTheQuestion