2010-12-15 15 views
0

Ich brauche Hilfe mit WCF bei der Einrichtung der Authentifizierung/Autorisierung. Ich möchte so viel wie möglich von der Box verwenden, um dies zu erreichen.WCF Authentifizierung/Autorisierung - Hilfe benötigt

Ich richte einen WCF 4.0-Anwendungsdienst ein, und ich werde sowohl 4.0 Web- als auch 4.0 Silverlight-Clients mit dem gleichen Dienst verbinden. Ich möchte, dass der Client eine Authentifizierungsmethode für den Dienst aufruft (die den Benutzernamen/das Kennwort für die Datenbank überprüft) und dann ein Token an den Client zurückgibt. Der Client speichert dann dieses Token und sendet es (transparent) mit jedem nachfolgenden Serviceanruf. Auf dem Dienst wird dieses Token bei jedem Anruf überprüft. Auch muss ich einige Sicherheitsüberprüfungen (Serverseite) während jedes Betriebsanrufs unter Verwendung der Benutzer-ID durchführen, also muss möglicherweise in das Zeichen eingeschlossen werden.

Ich möchte einige Client/Server-Beispiele erhalten, wie dies zu erreichen ist! Vielen Dank!

+0

Das Szenario, das Sie beschreiben, ist wahrscheinlich das "nicht-out-of-the-box" von allen - Sie tun im Grunde alles (Authentifizierung, Autorisierung) in Ihrem eigenen benutzerdefinierten Code .... –

Antwort

0

Sie können einen benutzerdefinierten Benutzernamen Passwort-Validator mit WSHttpBinding schreiben. Dies gibt Ihnen die Möglichkeit, das Benutzername-Passwort zu validieren. Sie können jedoch keine Daten zu dem Token hinzufügen, das freigegeben wird, sobald die Authentifizierung erfolgt.

Dies ist eine sessionvolle Bindung, was bedeutet, dass ein Client über einen zugeordneten Status auf dem Server verfügt. (Dies ist nicht günstig für skaliert Szenario mit einem Load Balancer dazwischen, da haben Sie vielleicht die Auth restablish, wenn die Anforderung an einen anderen Server geht)

http://www.pnpguidance.net/post/WCF35SecurityGuidelinesNowAvailable.aspx

Die Ermächtigung Teil der schwierige Teil ist, da Sie können Deklarieren Sie entweder Principal-Berechtigung oder Imperativ-Option. http://msdn.microsoft.com/en-us/library/ff647503.aspx#AuthorizationOptionsWCF

3

Ich endete mit der Verwendung eines benutzerdefinierten Secure Token Service. Mein Client ruft den STS auf, authentifiziert und erhält ein Token zurück, das speichert. Dann verwendete ich einen Nachrichteninspektor, um das Token in jeden ausgehenden WCF-Serviceanruf einzufügen, und verwendete einen Nachrichteninspektor auf der Serverseite, um jeden Anruf abzufangen und zu validieren, indem das Token verifiziert wurde. Das hat ziemlich gut funktioniert.