Laden...

[WCF] Rest-Service, Custom Authentification über SessionParameter, Custom RoleProvider

Erstellt von jreusch vor 12 Jahren Letzter Beitrag vor 12 Jahren 739 Views
jreusch Themenstarter:in
296 Beiträge seit 2007
vor 12 Jahren
[WCF] Rest-Service, Custom Authentification über SessionParameter, Custom RoleProvider

Hallo liebe Community,

ich stricke gerade an einem Service und umschreibe kurz meine Anforderungen:

Die Schnittstelle sollte nachher über ein Rest-Interface angeboten werden und folgendermaßen aufgebaut sein:


        // Returns SessionKey
        string Login(string username, string password);

        void Logout(string sessionKey);

        [PrincipalPermission(SecurityAction.Demand, Role = "Administrator")]
        void DoSth(string sessionKey);

        [...]

Sprich: Bis auf Login geht jedem Aufruf ein SessionKey vorran, mit dem der User zunächst authentifiziert und danach ggf. authorisiert werden soll. Dazu würde ich gerne das rollenbasierte Modell aus dem Framework nutzen.

Ich habe also zunächst einen eigenen RoleProvider implementiert, der das Rollenmodell aus einer SQL Azure DB bereitstellt und diesen entsprechend konfiguriert.

Das Problem ist nun die Authentifizierung. Wie kriege den Principial im HttpContext -vor dem Aufruf- entsprechend auf den User eingestellt, der hinter dem SessionKey steckt?

Der Service wir später auch auf Azure gehostet.

Vielen Dank und viele Grüße
Julian

106 Beiträge seit 2011
vor 12 Jahren

Ich bin mir nicht ganz sicher, aber ich glaube das ist nicht möglich und schon garnicht als Attribut. Da diese ja bereits zur Compilierung feststehen müssen. Glaube du kommst mit nem RoleProvider hier nicht wirklich weiter und solltest überlegen eine unabhängige Lösung von Role- und MembershipProvider zu implementieren.

MfG
Rabban

B
387 Beiträge seit 2005
vor 12 Jahren

Hi Rabban,

ich beschäftige mich selber seit einer Weile mit REST, m. E. sollte es schon drin sein. Aber: Die Logik, dass das PrincipalPermission Attribute korrekt angewendet wird, wirst du wohl oder übel selber schreiben müssen. Besonders dann, wenn du mit einem eigenen Session-Key arbeitest.

Über welchen Weg möchtest du eigentlich das REST-API zur verfügung stellen? Über die Funktionen, die WCF im Framework 3.5 / 4.0 hat oder bereits mit der ASP.Net WebApi in .Net 4.5?

Gruß
Roland

jreusch Themenstarter:in
296 Beiträge seit 2007
vor 12 Jahren

Hi Roland,

ich habs inzwischen hinbekommen.

Ich habe einen eigenen AuthentificationManager geschrieben, der jede Nachricht mitliest und ggf. einen Custom Principal einklinkt.

Dann gibt es eine eigene AuthorizationPolicy, die den Principal wiederrum aus der Nachricht holt und in den evaluationContext der Abfrage setzt.

Das wars dann auch schon.

Ja ich wollte es gerne über die WCF-Funktionalitäten veröffentlichen. Gibts da Probleme?

Viele Grüße
Julian