Добавьте метку времени к узлу wsdl SignedParts в WCF - PullRequest
0 голосов
/ 28 июня 2018

Мы хотим добавить значение, которое отличается для каждого запроса (например, отметку времени), которое будет добавлено к <sp:SignedParts> в нашем wsdl под WCF. В настоящее время wsdl для нашего сервиса содержит:

<wsp:ExactlyOne>
 <wsp:All>
   <sp:SignedParts>
    <sp:Body/>
    <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing"/>
    <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing"/>
   </sp:SignedParts>
   <sp:EncryptedParts>
    <sp:Body/>
   </sp:EncryptedParts>
  </wsp:All>
</wsp:ExactlyOne>

И конфиг для сервиса и привязки:

<service behaviorConfiguration="ServiceBehavior" name="IService">
 <host>
  <baseAddresses>
   <add baseAddress="https://localhost/Service" />
  </baseAddresses>
 </host>
 <endpoint binding="customBinding" bindingConfiguration="CertificateBinding" contract="IService" />
 <endpoint binding="mexHttpsBinding" contract="IMetadataExchange" address="mex" />
</service>
[...]
<customBinding>
 <binding name="CertificateBinding">
  <sslStreamSecurity requireClientCertificate="true" sslProtocols="Tls12" />
   <security authenticationMode="MutualCertificate" 
                messageSecurityVersion="WSSecurity11WSTrust13WSSecureConversation13WSSecurityPolicy12"
                requireSignatureConfirmation="true"
                enableUnsecuredResponse="false"
                includeTimestamp="true" />
   <httpsTransport authenticationScheme="Anonymous" maxReceivedMessageSize="1000000"/>
 </binding>
</customBinding>

Мы знаем, что для сложных запросов <sp:Body/> всегда будет отличаться, но как насчет тела без параметров, такого как вызов метода GetNextScript?

После некоторого поиска в Google я обнаружил, что этого можно добиться с помощью пользовательского EndpointBehavior, который меняет OutgoingSignatureParts. По какой-то причине этот подход не изменил для меня wsdl.

Это правильный подход или существует более простой способ добавить метку времени к <sp:SignedParts> узлу в wsdl?

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