Убрать элементы XMLDSIG из входящего XML POST в службу WCF RESTful - PullRequest
2 голосов
/ 18 октября 2010

Ребята, я создаю службу RESTful, которая защищена предоставлением подписи XMLDSIG XML внизу документа XML.Когда я отправляю этот документ на сервер, служба WCF выполняет метод десериализации XML для полезной нагрузки HTTP, чтобы предоставить мне класс C #.К сожалению, для правильной десериализации, определение класса C # должно иметь все свойства, необходимые для определения сигнатуры XML, хотя мне это нужно только для безопасности.

Итак, что я хотел бы сделатьзаключается в следующем:

  • построить поведение службы WCF, которое перед вызовом проверяет подпись XML, проверяет ее и затем удаляет из XML перед десериализацией для обычного вызова метода.

Возможно ли это?Если так, где я могу начать искать, как это сделать?Я чувствую, что я близко, я просто не нашел правильную точку впрыска WCF.

ps Все .NET 4.0, Visual Studio 2010, IIS 7 +.

1 Ответ

0 голосов
/ 21 октября 2010

Разобрался. Я создал класс XmlSignatureVerificationConfigurationSection, который позволяет мне перетаскивать элемент XML, вызываемый непосредственно, в мою конфигурацию поведения WCF. Этот раздел конфигурации затем указывает WCF на тип данных моего расширения поведения, SignatureVerificationBehavior. Это поведение затем указывает на пользовательский инспектор сообщений, который я написал, SignatureVerificationInspector. Этот инспектор открывает сообщение, удаляет узел подписи из полезной нагрузки, проверяет подпись и затем отправляет новое сообщение (подпись удалена) обратно по конвейеру, где определения служб остаются в блаженном неведении о наличии подписей.

...