Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[WCF] Rest-Service, Custom Authentification über SessionParameter, Custom RoleProvider
jreusch
myCSharp.de - Member

Avatar #avatar-3346.jpg


Dabei seit:
Beiträge: 303

Themenstarter:

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

beantworten | zitieren | melden

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
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von jreusch am .
private Nachricht | Beiträge des Benutzers
Rabban
myCSharp.de - Member

Avatar #avatar-3383.jpg


Dabei seit:
Beiträge: 112
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Blacal
myCSharp.de - Member



Dabei seit:
Beiträge: 392

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
jreusch
myCSharp.de - Member

Avatar #avatar-3346.jpg


Dabei seit:
Beiträge: 303

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers