Das wichtigste Vorweg:
Egal ob es sich um eine kostenlose Anwendung handelt oder nicht: sobald Du mit Anmeldedaten umgehst bist Du sofort in der Situation Dich an geltendes Recht halten zu müssen.
Das heisst, dass Du Dich neben der Software mit den Gesetzen auseinander setzen darfst.
Die Strafen bei Verletzungen betrifft auch private Anwendungen; nicht nur kommerzielle!
Die Gesetze, zB der Datenschutz schreiben hier Dinge vor, wie Du etwas umsetzen muss. Teilweise genau, teilweise schwammig.
Das fängt bei der Art und Weise an, wie man einen Account validieren muss und geht soweit, dass es Vorschriften gibt, wie Du Passwörter speichern darfst / musst.
Zitat von Michael1995 |
Meine Idee war es, hierfür eine Datenbank online anzulegen, die sämtlich Nutzerdaten speichert (Username, Passwort, Punktzahl, usw.) Was auch noch gleichzeitig eine coole Übung für Datenbanken wäre.
|
In dieser Formulierung eine ganz ganz ganz arg schlechte Idee.
Da Du mit Unity arbeitest, hast Du also eine Desktop-Anwendung. Du kannst Dich also nicht mit einer Online-Datenbank verbinden, weil eine Datenbank niemals direkt über das Internet erreichbar sein darf.
Vor allem eine Datenbank mit Credentials nicht.
Ein Login hat immer das Resultat, dass es danach eine Login-Session gibt; also eine Identifikation, dass ein Login erfolgt ist und der Kontext authentifiziert ist.
Bei Webanwendungen wird dies in einem Cookie abgespeichert.
Bei Desktop-Anwendungen kannst Du das in dieser Form nicht machen; weil es kein Cookie gibt.
Hier kommen Token zum Einsatz; JWT-Token.
In einem Id Token steht drin wer (Id, Name..) Du bist und in einem Access Token steht drin was Du darfst (Rechte etc).
Die Verfahren hier heissten OpenID sowie OAuth2.
Was Du brauchst ist also eine Authentifizierungsendestelle, die einen solchen Token ausstellt.
Das heisst:
- Deine Credentials liegen in einer Datenbank, die nicht vom Internet direkt aus erreichbar sein darf
- Du hast eine Webanwendung (API), die einen Login-Endpunkt zur Verfügung stellt und Token ausstellt
- Du hast eine Client-Anwendung, die mit dem Login-Endpunkt spricht und dann den Token für die weiteren Aktionen verwendet.
So funktioniert quasi fast jedes Login-System heutzutage; vor allem über das Internet.
Zitat von Michael1995 |
Habt ihr hier Erfahrungen über bestehende fertige Tools, oder macht es Sinn wirklich eine Datenbank mit den Infos der Nutzer anzulegen? |
Klar, gibt tausende fertige Anwendungen, Services oder Frameworks dafür.
Microsoft, Google, Amazon und Co bieten alle solche Tools. Dazu viele Frameworks.
Zitat von Michael1995 |
Bedeutet das immensen Aufwand, oder ganz OK? |
Ich habe in den letzten Jahren viele Loginsysteme für Kunden gebaut, angebaut oder angeschlossen.
Ein Login-System muss gut geplant sein, weil es das Herz der Anwendung ist. Den Aufwand darf man nicht unterschätzen: vor allem muss man wissen was man macht, besonders, wenn man mit Credentials von fremden Leuten zutun hat.
Das ist einfach eine andere Verantwortung als eine Wetter-App.
Zitat von Michael1995 |
Also habe es mir für den Anfang so vorgestellt, dass man sich registriert, dann anmeldet, geprüft wird von der Anwendung, ob das ein gültiger Benutzer mit richtigem PW ist und dann man beispielsweise schon ein Singleplayer-Game mal starten kann. |
Damit beschreibst Du quasi die simple Sicht eines Anwenders: im Hintergrund ist das schon etwas mehr.
Mein Tipp
Wenn Du kein Plan hast, wie man ordentlich Passwörter speichert und darauf auch keine Lust hast, dann mach das nicht.
Das ist kein gutes Einstiegsthema ;-) Mach Dir das Leben einfacher und verzichte vollständig auf ein eigenes Loginsystem, wenn Du das nicht brauchst.
Biete den Leuten an, dass sie ihren Microsoft, Google, Facebook..... Account für den Login verwenden, dann kommst Du erst gar nicht in die Situation, dass Du Anmeldedaten verantworten musst oder verlieren kannst.
ASP.NET Core hat in der eingebauten Authentifizierung bereits solche externe Provider vorgesehen
Google external login setup in ASP.NET Core
Später, wenn Du eigene Rechte hast, dann kannst Du den Aufsatz ASP.NET Identity verwenden, um die User (ohne Credentials) in Deiner Anwendung zu speichern und entsprechend die Rechte in Deiner eigenen Umgebung zu nutzen.
Introduction to Identity on ASP.NET Core
Mit dieser Umsetzung kannst Du quasi ein vollwertiges Loginsystem bauen ohne, dass Du irgendwo die eigentlichen Credentials speichern musst.
Im ersten Schritt könntet ihr quasi einfach direkt aus Unity euch mit Google Authentifzieren und erst später den Weg, wenn notwendig mit ASP.NET Core gehen.
Den OAuth Flow, der für die App-Login-Lösung notwendig ist, nennt sich Device Flow.
Google OAuth 2.0 for Mobile & Desktop Apps
Aber: Du hast da sehr viel Lektüre vor Dir und eine steile Lernkurve.