2010-07-29 12 views
5

Podemos añadir encabezado del mensaje para el mensaje WCF mediante la adición de atributos MessageHeader como estoagregar dinámicamente cabecera de cifrado de mensajes WCF

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

primera pregunta es, qué tan seguro es esto, y es este trabajo para todo tipo de fijaciones WCF?

y la segunda pregunta, ¿es posible añadir encabezado cifrada a todos los mensajes y extraer en el servidor de la parte dinámica de esta manera?

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

Respuesta

2

podría utilizar el IServiceBehavior que a su vez utilizar un DispatchMessageInspector.

Para el proxy de cliente debe crear una IEndpointBehavior que utilizaría un IClientMessageInspector

El IClientMessageInspector sería una instancia de un MessageHeader o un tipo derivado y añadirlo a cada solicitud dentro del método BeforeSendRequest.

El DispatchMessageInspector sería analizar cada solicitud dentro del método AfterReceiveRequest y extraer la cabecera de allí.

Una advertencia de esto es que no creo que esta intención o cabecera serán documentados en el interior del WSDL. Para eso creo que tendría que tomar el control usando un implemntation costumbre de la interfaz IWsdlExportExtension.

Andrew

+0

que sé de IServiceBehavior, pero parece que no funcionan para PollingDuplex vinculante para Silverlight ... –

Cuestiones relacionadas