Динамически добавлять зашифрованный заголовок сообщения WCF - PullRequest
5 голосов
/ 29 июля 2010

Мы можем добавить заголовок сообщения к сообщению WCF, добавив атрибут MessageHeader, подобный этому

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

Первый вопрос: насколько это безопасно и работает ли оно для всех типов привязок WCF?

и второй вопрос, возможно ли добавить зашифрованный заголовок ко всем сообщениям и динамически распаковывать их в серверной части?

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

1 Ответ

2 голосов
/ 29 июля 2010

Вы можете использовать IServiceBehavior, который, в свою очередь, будет использовать DispatchMessageInspector.

Для клиентского прокси вы должны создать IEndpointBehavior, который будет использовать IClientMessageInspector

IClientMessageInspector будет создавать экземпляр MessageHeader или производного типа и добавлять его к каждому запросу в методе BeforeSendRequest.

DispatchMessageInspector будет анализировать каждый запрос внутри метода AfterReceiveRequest и извлекать оттуда заголовок.

Одно предостережение об этом заключается в том, что я не думаю, что это намерение или заголовок будут документированы внутри WSDL. Для этого, я думаю, вам придется взять на себя управление с помощью пользовательской реализации интерфейса IWsdlExportExtension.

Andrew

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...