Laden...

MembershipProvider, ClientCredentials forwarden

Erstellt von Rushmore vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.369 Views
R
Rushmore Themenstarter:in
69 Beiträge seit 2006
vor 13 Jahren
MembershipProvider, ClientCredentials forwarden

Hallo,

ich habe einen WCF LoginService der einen abgeleiteten MemberShipProvider für die Authentifizierung gegen unsere Benutzerdaten nutzt (UserName, Password).

Soweit ist auch alles i.O.

Serverseitig kann ich über den ServiceSecurityContext.Current.PrimaryIdentity den aktuellen Benutzer(namen) sehen.

Frage1: Wie können zusätzliche Informationen wie z.B. MandantGuid
and die PrimaryIdentity gebracht werden?

Frage2: Oder müssen dafür Client-/ServerCredentials und der ganze Token
-Zenoba angepasst werden?

Frage3: Ganz unabhängig von Frage 1und 2, wie können die Credentials an einen
weiteren Service weitergeleitet werden?

Gruß
Carlo

3.728 Beiträge seit 2005
vor 13 Jahren
WCF sucks!

Hallo Rushmore,

bei .NET Remoting geht alles, was Du Dir wünschst out-of-the-box. Du würdest den Mandantenschlüssel einfach am Client in den Aufrufkontext (CallContext) legen und schon würde der Schlüssel implizit zum Server übertragen. Vor allem würde er auch vom ersten aufgerufenen Service zum weiteren Services weitergeleitet, die wiederum vom ersten Service aufgerufen werden.

Bei WCF gibt es keinen CallContext mehr. Stattdessen gibt es einen OperationContext. Der funktioniert aber nur für genau einen einzigen Methodenaufruf. Also spätestens beim 2. Service in der Aufrufkette sitzt DU bei WCF wieder auf dem Trockenen.

Das Problem an WCF ist, dass man alles auf Standards und Interoperabilität ausgelegt hat. Wenn ich z.B. mit einem Java-Webservice kommunizieren, dann kann ich natürlich keinen CallContext (a la Remoting) voraussetzen, da dieser z.B. im SOAP-Standard nicht vorgesehen ist (Wenn ich aber 100% reines .NET habe und sowohl Server als auch Client selber schreibe, dann ärgere ich mich darüber, dass ich bei WCF trotzdem mit ähnlichen Beschränkungen zu kämpfen habe, wie bei einem interoperablen Projekt).

Nichts desto trotz gibt es auch bei WCF Mittel und Wege, um ans Ziel zu kommen (Allerdings muss man dafür jede Menge Code hinschreiben). Für eigene Credentials findest Du hier ein Beispiel: MSDN: Custom WCF Credentials

Damit die Weiterleitung funktioniert, musst Du vermutlich diverse Behaviors schreiben. Hab ich allerdings noch nicht gemacht. Es gibt auch kein Beispiel dazu (zumindest habe ich noch keines gefunden). Vielleicht inspiriert Dich folgende Seite: MSDN: Extending WCF

Oder Du verwendest einfach das gute alte .NET Remoting. Das tut einfach was es soll, ohne dass man Kopfstände machen muss. Neues muss nicht besser sein. So ist es auch mit WCF. Zumindest wenn man einfach .NET zu .NET Kommunikation machen will.