2010-12-09 3 views
1

Unser System verwendet eine benutzerdefinierte Rollen und ein Authentifizierungssystem zum Authentifizieren von Benutzern.Benutzerdefinierte PrinciplePermission-Authentifizierung

Ich bin jetzt in der Service-Seite Validierung/Sicherheit. Ich möchte unsere benutzerdefinierte Authentifizierung, Autorisierung auf der WCF auch implementieren.

Ich habe einige Untersuchungen durchgeführt, es sieht so aus, als könnte ich das PrinciplePermission-Attribut in den Verträgen verwenden, um den Zugriff zu erlauben/zu verweigern. Der Standardwert ruft nur die IsInRole-Methode für das IPrinciple und die IsAuthenticated für die IIdentity auf.

So habe ich 2 Fragen:

  1. Wie mein eigenes Prinzip umzusetzen, die zusätzlichen Daten/Methoden hat?
  2. Wie füge ich Zusatzprüfungen zu den PrinciplePermissions hinzu? eg (IsExternal Gibt das überprüft, ob sie den Dienst aus dem Intranet oder Internet zugreifen [hat einen Mechanismus, um dies bereits zu überwachen])

Dank

Antwort

0

Nach einigem Experimentieren ich mit einer eigens geschriebenen Lösung kam:

Ich basierte meine Lösung in Kyle McClellan Authorisation Sample. Ich passte die Attribute an, um nach einer benutzerdefinierten Klasse zu suchen, um den Benutzer abzurufen.

Um das Async-Problem zu umgehen Ich habe den Benutzer und seine relevanten Daten in der App.xaml vor dem Instanziieren der MainPage geladen, dann verwende ich eine globale Singleton, die ich SecurityContext, um auf Benutzerdaten zugreifen.

Der SecurityContext ist ein speicherinterner Speicher der Benutzerdaten, auf die clientseitig zugegriffen werden kann.