2016-04-20 2 views
0

Ich frage mich, was wäre der beste Weg, um darüber zu gehen. Grundsätzlich verhält sich mein Programm wie die Steam-Anwendung für PCs oder Spotify, die sich automatisch beim Benutzer anmeldet.C# lokal speichern ein Passwort für die Online-Verifizierung

Mit anderen Worten, der Benutzer hat ein Online-Konto auf unserer Website erstellt. Mit diesem Konto-Login (E-Mail und Passwort) können sie sich in unsere C# App einloggen und haben Zugang zu den Programmfunktionen.

Ich habe das funktioniert gut, wie die C# App sicher über das Internet zu einem Web-Service mit SSL bewaffnet, die Website-Datenbank zugreifen und überprüft die Login-Informationen. Ich möchte, dass dieser Schritt automatisiert wird. Sobald das Programm gestartet wird, sollte es automatisch angemeldet werden, vorausgesetzt, dass es sich mindestens einmal angemeldet hat.

Was wäre der beste Weg, dies zu tun und nicht die Sicherheit ihrer Login-Informationen zu gefährden?

+0

Das Problem mit einem automatischen Login-Schema aus Sicherheitsgründen ist, wenn eine andere Person (nicht Ihr verifizierter Benutzer) versucht, vom Computer des Benutzers auf die Anwendung zuzugreifen, wird sie sie einlassen, obwohl sie möglicherweise nicht mit dem handeln verifizierte Benutzergenehmigung oder in ihrem Namen. Wenn Sie die Informationen des verifizierten Nutzers wirklich schützen möchten, implementieren Sie die automatische Anmeldung nicht. – Kevin

+0

Aufgrund der Natur meines Programms gibt es eigentlich zwei Logins.Zuerst ist das Site-Konto und danach ist der lokale Datenbankbenutzer. Selbst wenn jemand, der das Programm nicht verwenden soll, versucht, sich einzuloggen, selbst wenn er sich im ersten Schritt automatisch anmeldet, benötigt er das Kennwort des Datenbankbenutzers. – nerdalert

+0

Ihr Anliegen ist natürlich ein gültiger, aber ich denke in meinem Fall ist das kein Problem. Und da ich dieses doppelte Login-System habe, ist das ein weiterer Grund für die automatische Anmeldung, da es einen Schritt für den Endbenutzer entfernt. – nerdalert

Antwort

0

Erstellen Sie eine db-Tabelle, sagen wir, sie heißt userlogged. Erstellen Sie eine GUID jedes Mal, wenn der Benutzer sich erfolgreich anmeldet. Speichern Sie diese GUID in userlogged und geben Sie sie an Ihre C# -App zurück, damit sie lokal gespeichert werden kann (Sie können sie verschlüsseln, Windows-Registrierung (regedit) oder was auch immer Sie wollen) für jedermann, es zu kopieren).

Das nächste Mal, wenn die GUID lokal gespeichert ist, wird diese an Ihre Anwendung gesendet und Ihre Anwendung protokolliert den Benutzer und erstellt eine neue GUID, die auch lokal gespeichert wird (damit, falls jemand die GUID wird nicht 2 Benutzer gleichzeitig angemeldet sein).

Wenn die Protokollierung fehlgeschlagen ist, löschen Sie die GUID aus der Datenbank.

Legen Sie auch ein Flag fest. Wenn ein Benutzer von der GUID abgemeldet wurde, wird er aufgefordert, sich erneut für einige sicherheitsrelevante Vorgänge anzumelden, z. B. das Passwort ändern.

0

In Ordnung, wenn ich Ihre Frage richtig verstanden habe, wollten Sie die Benutzer-ID und das Passwort sicher speichern. Und verwenden Sie sie, um sich beim Start der Anwendung anzumelden.

Es gibt 2 Teile es

  1. Lagerung - Wo diese Daten
  2. Sicherheit halten - Wie das Passwort

  3. Viele Standorte schützen Sie diese Informationen halten können. Anwendung Konfigurationsdatei, Registry, INI, lokaler Speicher, db usw. Ich überlasse dies Ihrer Entscheidung.

  4. Dies ist der kritische Teil, der das Passwort schützt. Sie können Triple DES- oder AES-Verschlüsselungen verwenden, um das Kennwort zu schützen. Alternativ dazu können Sie die Windows Data Protection-API (DPAPI) verwenden, die vom Betriebssystem generierte und geschützte Schlüssel und den Triple-DES-Verschlüsselungsalgorithmus zum Verschlüsseln und Entschlüsseln von Informationen verwendet. In C# können Sie die System.Security.Cryptography.ProtectedData-Klasse für diese Angelegenheit verwenden.

Hoffe, das hilft.

+0

Wird es ein Problem sein, wenn dieses verschlüsselte Passwort für den Benutzer sichtbar ist? Oder ein anderer Benutzer, der auf dem Computer herumschnüffelt? Angenommen, ich speichere es in der Registrierung, da ich die E-Mail dort bereits gespeichert habe, gibt es eine Möglichkeit, diese verschlüsselte Zeichenfolge umzukehren? – nerdalert

+0

Mit der richtigen Verschlüsselungsmethode wird es für jeden schwierig sein, sie zu entschlüsseln. – RajN

+0

Ok, ich werde das untersuchen. Vielen Dank! – nerdalert