2010-10-18 2 views
2

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

Итак, что я хотел бы сделать это:

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

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

p.s. Все это .NET 4.0, Visual Studio 2010, IIS 7+.

+0

Я понимаю, что это звучит странно похоже на встроенную безопасность уровня WCF на wsHttpBinding ... но помните, что это REST. Мне не нужно шифрование, мне просто нужна подписанная подпись с секретным ключом (стандарт XMLDSIG ... как реализованный .NET SignedXml class ...) упал на конец моей полезной нагрузки, а затем очистился, прежде чем WCF попытается де- сериализуйте полезную нагрузку в класс C#. –

ответ

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^