Was tun, wenn Sie ein Passwort nicht als Hash speichern können?

8

Ich habe ein Programm, das System.DirectoryServices.AccountManagement.PrincipalContext verwendet, um zu verifizieren, dass die Information, die ein Benutzer in einem Setup-Bildschirm eingegeben hat, ein gültiger Benutzer in der Domäne ist (der Computer selbst ist nicht in der Domäne) und führt einige Operationen für die Benutzer aus Domain. Das Problem ist, dass der Benutzer nicht jedes Mal, wenn er das Programm ausführt, sein Kennwort eingeben muss, damit ich es speichern kann, aber ich fühle mich nicht wohl dabei, das Kennwort als Nur-Text in der Datei app.config zu speichern. PrincipalContext benötigt ein Klartext-Passwort, so dass ich keinen gesalzenen Hash machen kann, wie jeder empfiehlt, um das Passwort zu speichern.

Das habe ich gemacht

%Vor%

War das das Richtige oder gibt es einen besseren Weg?

BEARBEITEN - Hier ist eine aktualisierte Version, die auf den Vorschlägen aller basiert.

%Vor%     
Scott Chamberlain 16.02.2010, 14:19
quelle

3 Antworten

2

Anstatt new System.Text.ASCIIEncoding() zu schreiben, sollten Sie System.Text.Encoding.ASCII schreiben.

Außerdem empfehle ich stattdessen UTF8.

Ansonsten sieht Ihr Code ziemlich gut aus.

    
SLaks 16.02.2010, 14:22
quelle
4

Für das Salz würde ich eine Transformation für den Benutzernamen vornehmen (Hash), anstatt das gleiche Salz für alle zu teilen.

Für so etwas würde ich auch nach einer Möglichkeit suchen, die bestehende Sitzung länger am Leben zu erhalten, anstatt das Passwort zu speichern, um neue Sitzungen zu erstellen.

    
Joel Coehoorn 16.02.2010 14:26
quelle
0

Ich mag den JoelCoehoorn-Ansatz.

Verwenden Sie einen für den Benutzercomputer eindeutigen Wert als das Kennwort salt.

Es wird also in jeder Hinsicht anders sein; ).

UPDATE: Sehen Sie diesen Thread für Ideen: How-To-Get-Unique-Machine - Unterschrift

    
SDReyes 16.02.2010 14:38
quelle

Tags und Links