none
Benutzerkonten mit Passwörtern lokal ablegen RRS feed

  • Allgemeine Diskussion

  • Hi,

    ich schreibe eine Software, in welche eine Nutzerverwaltung integriert werden soll.
    Nun ist der Rechner, auf dem die Software läuft nicht unbedingt mit dem Internet verbunden und ein Benutzerabgleich mit einer Serverdatenbank nicht möglich. Die Nutzerdaten müssen lokal gespeichert werden.
    Wenn ich diese nun einer lokalen Datei speicher, dann können gewiefte Menschen natürlich diese Datei direkt bearbeiten, was nicht passieren darf.

    Was gibt es für Technologien, mit welcher man eine Benutzerverwaltung sicher lokal ablegen kann?


    www.energiewende-mach-ich-selbst.de

    Donnerstag, 24. Juli 2014 09:42

Alle Antworten

  • Hi,

    versuche es über die Registry.

    Setze Keys mit Values.

    Mir hat dies sehr geholfen.

    http://csharp-tricks.blogspot.de/2010/08/registry-tutorial.html

    grüße

    Cay


    • Bearbeitet joksch_c Dienstag, 29. Juli 2014 12:02
    Dienstag, 29. Juli 2014 12:01
  • Aber die Registry lässt sich auch auslesen. Oder?

    www.energiewende-mach-ich-selbst.de

    Dienstag, 29. Juli 2014 13:11
  • Hi,

    ja die lässt sich auslesen.

    Aber man müsste ja schon den Pfad wissen wo das liegt.

    Du solltest die Einträge entweder für jeden User in jeden Current User anlegen falls sich alle mit ihrem eigenen Namen anmelden oder das Programm immer als Admin ausführen dann kannst du es auch unter Local Machine abspeichern.

    Registry.LocalMachine.CreateSubKey("Software\\MeinKey"); RegistryKey isReg = Registry.LocalMachine.OpenSubKey("Software\\MeinKey", true); isReg.SetValue("MeinPassword", "12345");

    isReg.SetValue("Name", "Hans");

    dann die Registryeinträge holen

    RegistryKey isReg = Registry.LocalMachine.OpenSubKey("Software\\MeinKey", true);
    
    string password = isReg.GetValue("MeinPassword").ToString();
    string name = isReg.GetValue("Name").ToString();

    Das verhindert aber nicht das andere Böse Menschen die Registry bearbeiten und auslesen.

    Alternative wäre vieleicht eine xml Datei hilfreich aber da kenne ich mich selber ned so aus

    grüße

    Cay





    • Bearbeitet joksch_c Dienstag, 29. Juli 2014 14:46
    Dienstag, 29. Juli 2014 14:37
  • Hi Frank,

    Passwörter sollten nie im Klartext gespeichert werden. Nimm das Benutzer Passwort + Salt (zufällig generierter wert) und verwende eine einmal Verschlüsselung => PasswordHash (Im Cryptography Namespace solltest du die Passenden Methoden finden.) Den Salt kannst du im Klartext speichern.  Beim Einloggen erstellst du mit dem Passwort und dem Salt ein PasswordHash, das Vergleichst du mit Gespeicherten PasswordHash.

    Ob du es dann in der App/User Config speicherst (XML Schüßel/Werte Paar) oder in der Regestry macht meines Erachtens keinen Unterschied. Auser das du einfacher auf die Configdatei zugreifen kannst.

    Ich meine mal irgendwo gelesen zu haben, das es da im Framework Möglichkeiten gibt solche Informationen auf Windows Rechnern sicher zu speichern, da hab ich aber auf die Schnelle nichts gefunden.

    Was die Rechteverwaltung angeht musstest du schon ein wenig genauer schreiben was du will. Hier ist z.B. ein Membership Provider für WPF.Und wie hoch der Aufwand sein soll.

    Grundlegen könntest einfach du hingehen den PasswordHash + Rolle Verschlüssen (RollHash) in eine Datei speichern. Ist dann der RollHash da hat der User die Rechte wenn nicht, dann nicht. 

    MFG

    Björn

    .

    Dienstag, 29. Juli 2014 18:38