2016-02-16 4 views
1

Из-за некоторых очень специфических требований к отправке сообщений в IRS мне нужно использовать настраиваемую кодировку для создания сообщения MTOM. Проблема в том, что после этого обработка кодировщика, сообщение больше не является XML, поскольку оно должно создавать границы и заголовки для вложения.Нужно, чтобы клиент WCF выполнял поведение подписи до того, как кодеры коснулись сообщения

Это очень проблематично, потому что эта пользовательская кодировка выполняется PRIOR для поведения конечной точки, которую я настроил для подписывания исходящего сообщения с нашим сертификатом X509. Конфигурация здесь:

<behaviors> 
    <endpointBehaviors> 
    <behavior name="SigningBehavior"> 
     <clientCredentials> 
     <clientCertificate findValue="serial goes here" x509FindType="FindBySerialNumber" 
      storeLocation="CurrentUser" storeName="My" /> 
     <serviceCertificate> 
      <defaultCertificate findValue="serial goes here" x509FindType="FindBySerialNumber" 
      storeLocation="CurrentUser" storeName="My" /> 
      <authentication certificateValidationMode="PeerTrust"/> 
     </serviceCertificate> 
     </clientCredentials> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 

Есть ли способ, чтобы иметь клиента знак WCF и добавить заголовок WS-безопасности, прежде чем обычай кодирования выполняется?

ответ

0

Вы должны зарегистрироваться у этого блоггера http://webservices20.blogspot.com/2011/01/xml-digital-signature-signing-keyinfo.html. Он является экспертом в WCF.

Я до сих пор не достиг вашей точки. Работа над включением MTOM. Как вы добавили полезную нагрузку в качестве приложения MTOM? Я использовал mtomMessageEncoding messageVersion = "Soap11". Затем я понял, что IRS нуждается в кодировании GZip.

+0

О, это нелегко. Я настроил gzipMessageEncoding и сделал ссылку на реализацию Microsoft Enterprise SOAP с помощью вложений как innerMessageEncoding вместо WCF, встроенного в кодировку MTOM. Таким образом, я заранее знаю, какие значения id будут использоваться для вложения и границы, что позволит мне правильно настроить заголовки HTTP (в частности, заголовок Content-Type). Я узнал намного позже, чем желательно, чтобы вы не могли изменять или добавлять заголовки HTTP в любое время после того, как ваше сообщение вошло в конвейер WCF. Поэтому они должны быть установлены заранее. Следующее сообщение Я подробно расскажу о MTOM далее – Bon

+0

Теперь, внутри метода записи SWA Write, вот где я делаю свое подписание и делаю другие манипуляции. Конечно, подписание происходит очень долго. Необходимо заменить содержимое встроенного вложения BulkExchangeFile содержимым xop: Include с атрибутом href, соответствующим идентификатору приложения MTOM. Затем, после этого, и я подписываю x509, он возвращается к внешней кодировке gzip, а затем вниз по кабелю к IRS. – Bon

+0

Теперь я застрял в недействительном WS-заголовке после хорошего успеха, используя класс SignedXml для загрузки всего сообщения SOAP, ссылаясь на 3 идентификатора заголовка и получаю из него действительный элемент подписи ALMOST. Но он не использует SecurityTokenReference, как требует IRS. Вместо этого он использует аналогичные действительные (в соответствии с W3C) X509Data и X509Certificate элементы внутри элемента KeyInfo. – Bon

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

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