2009-07-30 3 views
1

Ich benutze diesen Code auf meinen WCF-Dienst zu authentifizieren:Zugang WCF-Authentifizierungsinformationen von der Serviceseite

proxy.ClientCredentials.UserName.UserName = "test"; 
proxy.ClientCredentials.UserName.Password = "pass"; 

Gibt es eine Möglichkeit, diese Informationen zugreifen innerhalb einer Methode meines WCF Service-Code? (Ich bin nicht an dem verwendeten Kennwort interessiert, sondern an dem Benutzernamen für Prüfzwecke.)

Ich versuche die Identität des Benutzers zu ermitteln, der die Methode aufruft, ohne die Methode zu ändern, um einen anderen Parameter einzuschließen.

Antwort

4

Sie können den Benutzernamen des Anrufers wie folgt abrufen:

ServiceSecurityContext ssc = ServiceSecurityContext.Current; 

if (!ssc.IsAnonymous && ssc.PrimaryIdentity != null) 
{ 
    string userName = ServiceSecurityContext.Current.PrimaryIdentity.Name; 
} 

Die PrimaryIdentity wird eine „normale“ IIdentity enthalten und verfügt über alle Felder (wie IsAuthenticated etc.), dass die Identität Objektklasse trägt.

Marc