2012-04-14 7 views
0

Hier ist das Problem: Ich entwickle eine Desktop-Anwendung zur Verbindung mit einem Server, und der Client muss sich anmelden. So etwas wie mit Skype oder IM-Anwendungen. Ich möchte dem Kunden die Möglichkeit geben, automatisch angemeldet zu werden, d. Sie müssen nicht jedes Mal ihre Anmeldeinformationen eingeben, wenn die Anwendungen geladen werden.Wie kann ich die Funktion "Automatisch anmelden" sicher für Desktop-Anwendungen implementieren?

Wie kann ich dies erreichen und gleichzeitig die Informationen des Kunden schützen?

Danke, ich habe seit Tagen über dieses Problem nachgedacht und ich kann nicht scheinen, eine Lösung zu finden. Jede Hilfe oder Anleitung wäre in diesem Stadium Gold.

Antwort

1

Wenn Sie einen sicheren Kommunikationskanal zum Server verwenden (z. B. SSL), können Sie den Benutzernamen und einen Hash des Kennworts senden (mit einer kryptografisch sicheren Hash-Funktion wie SHA-512) machbare Kollisions- oder Urbildangriffe).

Was Sie lokal speichern, ist der Benutzername und der Hash des Passworts. Vorausgesetzt, dass der Kommunikationskanal zum Server sicher ist, wird niemand die gesendeten Informationen sehen (keine Wiederholung möglich). Und die Verwendung einer kryptographisch sicheren Hash-Funktion bedeutet, dass es sich um eine Einwegfunktion handelt, die nicht zur ursprünglichen Eingabe "zurückgeht".

Eine andere Möglichkeit wäre, bei erfolgreicher Anmeldung ein Token der Authentifizierung vom Server zu erhalten. Dann könnte das Protokoll die Authentifizierung des Benutzers in Kombination mit dem Token innerhalb einer bestimmten Zeitdauer akzeptieren. Dann müssen Sie den Hash des Passworts nicht lokal speichern, sondern nur den Benutzernamen und das Token. Wenn also jemand das Token bekommt, wird es irgendwann ablaufen. Bedenken Sie jedoch, dass das Token nicht mit einem anderen Token, sondern nur mit einer korrekten Kombination aus Benutzername und Passwort erneut ausgegeben werden sollte. Darüber hinaus sollte der Benutzer nicht in der Lage sein, das Kennwort zu ändern/zu sehen, wenn er sich mit einem Token angemeldet hat. Wenn Sie noch weiter gehen wollen, können Sie das Token auch so beschränken, dass es nur von bestimmten IP-Adressen funktioniert.

+0

Aber was ist, wenn auf diese lokalen Daten zugegriffen werden kann, und auf einem anderen Client ersetzen Sie einfach den Wert des Benutzernamens und Hash-Wertes? Wie kann ich die lokalen Informationen sicher speichern? – rtheunissen

+0

Das ist es, was das Token erleichtern sollte. Wenn Sie jedoch (Benutzername, Kennwort-Hash) lokal speichern möchten, müssen Sie dies mit Kryptographie tun, und das würde sowieso einen Schlüssel erfordern. –

+0

Das macht jetzt Sinn, da nur der Entwickler admin Zugriff auf diesen Schlüssel hätte. Brillant. :) +1 – rtheunissen