2010-11-23 9 views
1

Ich habe eine Silverlight 4-Anwendung, die mit einem WCF-Dienst kommuniziert. Der Benutzer muss sich anmelden, um auf die WCF-Dienste zugreifen zu können.Benutzeranmeldung in Silverlight speichern 4

Jetzt möchte ich verhindern, dass der Benutzer Benutzername und Passwort jedes Mal neu eingeben, wenn er die Silverlight App startet. Was ist der beste Weg, dies zu erreichen? Ich habe über Cookies nachgedacht, um Benutzername/(Hash) Passowrd zu speichern, aber Cookies können nicht Unicode verarbeiten und das Passwort wird als Unicode gespeichert.

Was würden Sie vorschlagen?

Vielen Dank im Voraus,
Frank

Antwort

2

Nun können Sie etwas wie nach der ersten Anmeldung tun, ihre Anmeldeinformationen in verschlüsselter Form in isolierten Speicher speichern. Wenn SL startet, ziehen Sie das hoch und übergeben Sie es dem Dienst, um es zu validieren und dann einzuloggen.

+0

IS scheint eine gute Option zu sein, danke! – Aaginor

0

Da dies eine Silverlight-App ist, lassen Sie ASP.NET einfach die Authentifizierung für Sie übernehmen. Sie können Ihre WCF-Dienste weiterhin so sichern, dass sie nur mit einem authentifizierten Benutzer arbeiten. Here's an excellent article on the subject.

EDIT

ich sollte, dass der Autor in diesem Artikel erwähnt benutzerdefinierte Nachrichten-Header für den Benutzernamen/Passwort erstellt. Ich ersetzte gerade diese Logik mit der Überprüfung, ob die HttpContext.Current.User authentifiziert wurde, und wenn ja, dann erlaube Zugriff auf den Dienst.

1

Ein anderer Ansatz besteht darin, eine GUID zu speichern (falls verfügbar).

Zum Beispiel, wenn Ihr Datenbankschema sieht wie folgt aus etwas ...

user_id (UniqueIdentifier, primary key) 
username (varchar) 
password_hash (varchar) 
password_salt (varchar) 

Dann würde ich die user_id speichern und username in IsolatedStorage. Wenn ein Benutzer diese Variablen zurückgibt, werden sie zur Authentifizierung an eine spezielle Funktion in Ihrem WCF-Dienst übergeben.

Und solange die user_id den Benutzern nie angezeigt wird, kann dies eine sichere Methode sein, ohne das Kennwort zu kompromittieren. Übrigens habe ich diese Idee ursprünglich für eine Site entwickelt, die OpenID verwendet und daher keine Passwörter hat.

+0

Wenn ich das Benutzerpasswort (SHA256) hasse, warum ist ein eindeutiger Bezeichner erforderlich? Ich kann keinen Unterschied zwischen einem Angreifer sehen, der das hashed pwd und die GUID erhält. Mit beiden Informationen wäre sie in der Lage, auf die Anwendung zuzugreifen und mit beiden kann sie das vom Benutzer verwendete Passwort nicht wissen, oder liege ich falsch? – Aaginor

+0

Es gibt keinen Unterschied in der Sicherheit, es ist nur eine andere Möglichkeit, es zu tun. –