Autor Beitrag
GunHawK
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mo 24.03.14 14:23 
Hallo zusammen,

Ich habe folgendes System:

Auf einem PC läuft ein WCF Service. Auf einem Terminalserver läuft beispielsweise unter den beiden angemeldeten Usern "Ben" und "John" jeweils ein Client.
Im WCF Service ermittle ich folgendermaßen die IP des Clients:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
    RemoteEndpointMessageProperty clientEndpoint = null;
     ...
    clientEndpoint = OperationContext.Current.IncomingMessageProperties[RemoteEndpointMessageProperty.Name] as emoteEndpointMessageProperty;
    clientName = System.Net.Dns.GetHostEntry(clientEndpoint.Address).HostName;               
                
    clientIP = clientEndpoint.Address;


Allerdings ist natürlich die IP bzw. der Hostname des aufrufenden Clients immer gleich, nämlich die IP/Host des Terminalservers.

Gibt es eine Möglichkeit in meinem WCF Service herauszubekommen, von welchem Client (Ben oder John) auf dem Terminalserver die Anfrage kommt?

Mfg
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 24.03.14 14:43 
Wenns ein authentifizierter Kanal ist könnte man den Usernamen (bekommst du über den ServiceSecurityContext am OperationContext) auswerten.
Ansonsten hast du denke ich nur den Port am Endpoint woran du die Clients unterscheiden kannst.

Wenn du mehr wissen möchtest und das nicht Sicherheitsrelevant ist solltest du die Daten vielleicht einfach mit dem Service Call mitsenden.
GunHawK Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mo 24.03.14 15:07 
Danke für deine promte Antwort!

Mit "authentifizierter Kanal" meinst du, ob ich die WCF Authentifizierung verwende?
Nein, es wird keine verwendet(eigene Authentifizierung). Das Binding ist basicHttpBinding, und der InstanceContextMode ist PerCall.

Ich hab den ServiceSecurityContext mal abgefragt, aber er ist leider null.

Das Problem ist, dass die Info wegen Lizenzabfrage sicherheitsrelevant ist. Wenn z.b. ein 3rd Partyclient den Usernamen selbst eingeben könnte, woher weiß ich, ob dieser immer stimmt. Hier wäre es halt gut gewesen, wenn ich die Infos vom WCF bekomme.

Nun, wenns nicht geht, müssen wir uns halt was anderes einfallen lassen.

Mfg