2010-07-29 3 views
5

Wir können ähnlichedynamisch verschlüsselte Header WCF-Nachricht hinzufügen

durch Hinzufügen von Message Attribut Messagekopf zu WCF-Nachricht hinzufügen
[MessageContract] 
public class HelloResponseMessage 
{ 
    [MessageHeader(ProtectionLevel=EncryptAndSign)] 
    public string SSN 
    { 
     get { return extra; } 
     set { this.extra = value; } 
    } 
} 

erste Frage ist, wie sicher diese ist, und das ist für alle Arten von WCF-Bindungen zu arbeiten?

und die zweite Frage, ist es möglich, verschlüsselten Header zu allen Nachrichten hinzuzufügen und im Server Teil dynamisch wie diese extrahieren?

Antwort

2

Sie können das IServiceBehavior verwenden, das wiederum einen DispatchMessageInspector verwendet.

Für die Client-Proxy Sie eine IEndpointBehavior schaffen würden, die ein IClientMessageInspector

Die IClientMessageInspector würde instanziiert einen Message oder einen abgeleiteten Typen und fügen Sie sich auf jede Anforderung innerhalb der BeforeSendRequest Methode verwenden würde.

Der DispatchMessageInspector würde jede Anforderung in der AfterReceiveRequest-Methode analysieren und den Header daraus extrahieren.

Eine Einschränkung davon ist, dass ich nicht denke, dass diese Absicht oder Header in der WSDL dokumentiert werden. Dafür denke ich, dass Sie die Kontrolle über eine benutzerdefinierte Implementierung der IWsdlExportExtension-Schnittstelle übernehmen müssten.

Andrew

+0

Ich weiß über IServiceBehavior, aber es scheint es nicht für PollingDuplex arbeiten verbindlich für Silverlight ... –