Du meisten hier im Forum arbeiten als Software Entwickler; deswegen sind wir hier. Und die meisten hier haben >10-15 Jahre Erfahrung.
Ob nun eine Websache entwickelt wird oder nicht ist egal; Protokolle wie HTTP bzw. Aufsätze wie REST und gRPC basieren auf TCP und können überall verwendet werden, wo TCP funktioniert.
Willst Du das nicht, dann musst Du eben Dein eigenes Protokoll entwickeln, und darauf achten, dass auch der Handshake an für sich sicher ist.
Dir reicht dann auch kein nacktes TCP mehr, sondern Du musst einen sicheren Kanal aufbauen, zB über TLS wie es HTTP für den Authentifizierungshandshake macht (und denk dran TLS 1.3 zu nutzen, da 1.0 und 1.1 bereits veraltet sind und auch von Betriebssystemen bald geblockt werden).
Ansonsten hast Du eben ein Handshake über einen unsicheren Kanal, der einfach abgefangen werden kann.
Daher nochmal der Hinweis: wenn Du denkst "mal kurz" nen TCP Auth Handshake zu bauen, dann viel Erfolg :-)
In TCP gibt es
keine eingebaute Authentifizierungsmechanismen, das musst Du alles komplett alleine und selbst umsetzen. Siehe dazu
https://tools.ietf.org/html/rfc793 wenn Du es nicht glaubst.
Dass das alles andere als "mal kurz" passiert und es dafür keine fertigen Komponenten gibt, weil so halt TCP nicht funktioniert, wirst dann irgendwann merken, denke ich ;-)
TCP als Layer 4 ist verantwortlich für die Kommunikation zwischen Geräten, und dass die Pakete ankommen; nicht für Applikationsauthentifizierung.
Das passiert im Layer 5. Siehe Basics:
Internetprotokollfamilie
Daher entwickelt man - vor allem mit wenig Erfahrung - sowas auch nicht selbst, sondern verwendet Standards.
Zitat |
Nun soll sich der Client erst anmelden und und der Server (Dienst) die Anmeldung bestätigen.
|
So funktioniert jede Webanwendung, quasi jede Web / HTTP Api und jeder Datenbank-Server.
Das ist Alltag :-)
Wenn Du den Auftrag hast eine Handshake zu entwickeln, dann hast Du auch eine Anforderung.
Und dann musst Du eben - wenn Du das willst - ein eigenes Protokoll entwickeln und darin Authentifizierung einbauen, wie es zB. in HTTP implementiert ist.
Kannst Dir ja Dinge von
https://tools.ietf.org/html/rfc2616 abschauen
Alternativ kannst Du Dich ja von
how-to-build-a-protocol-on-top-of-tcp inspirieren lassen.
Das ist das, was Du mit HTTP und Dingen wie OAuth standardisiert mit wenigen Zeilen Code umsetzen kannst.