2010-07-29 12 views
5

Possiamo aggiungere intestazione messaggio a WCF con l'aggiunta di attributo MessageHeader come questoaggiungere dinamicamente crittografato messaggio WCF intestazione

[MessageContract] 
public class HelloResponseMessage 
{ 
    [MessageHeader(ProtectionLevel=EncryptAndSign)] 
    public string SSN 
    { 
     get { return extra; } 
     set { this.extra = value; } 
    } 
} 

prima domanda è, quanto è sicuro questo, ed è questo gruppo di lavoro per tutti i tipi di attacchi WCF?

e la seconda domanda, è possibile aggiungere un'intestazione crittografata a tutti i messaggi ed estrarre in una parte server dinamica come questa?

MessageHeader header = MessageHeader.CreateHeader("SessionKey", "ns", _key); 
OperationContext.Current.OutgoingMessageHeaders.Add(header); 

risposta

2

È possibile utilizzare l'IServiceBehavior che a sua volta utilizzerà DispatchMessageInspector.

Per il proxy client si creerebbe un IEndpointBehavior che utilizzare un IClientMessageInspector

L'IClientMessageInspector sarebbe un'istanza di un MessageHeader o di un tipo derivato e aggiungerlo a ogni richiesta all'interno del metodo BeforeSendRequest.

Il DispatchMessageInspector analizza ogni richiesta all'interno del metodo AfterReceiveRequest ed estrae l'intestazione da lì.

Un avvertimento è che non penso che questo intento o intestazione sia documentato all'interno del WSDL. Per quello penso che dovresti prendere il controllo usando un'implementazione personalizzata dell'interfaccia IWsdlExportExtension.

Andrew

+0

so di IServiceBehavior, ma sembra che non funziona per PollingDuplex vincolante per Silverlight ... –

Problemi correlati