El servicio WCF con WS-Security solo requiere una marca de tiempo firmada

Necesito proporcionar un servicio a un tercero que envíe mensajes de telenovela con una marca de tiempo firmada.

¿Cómo puedo configurar mi servicio para soportar esto?

ACTUALIZAR Me las arreglé para acercarme al formato del mensaje de Soap que buscamos, pero WCF insiste en firmar tanto el nombre de usuario como los tokens de marca de tiempo. ¿Hay alguna forma de modificar el enlace para firmar solo la marca de tiempo?

Actualización adicional Aquí están nuestros requisitos:

El elemento Timestamp DEBE estar firmado.El nombre CN en el certificado utilizado para firmar DEBE coincidir con el nombre de usuario dado en el elemento UsernameToken.El certificado utilizado para firmar DEBE enviarse en el elemento BinarySecurityToken.El elemento KeyInfo DEBE contener solo un elemento SecurityTokenReference, que debe usarse para hacer referencia a BinarySecurityToken.Se DEBE especificar un algoritmo de canonicalización.El método de firma DEBE especificarse y DEBE ser el algoritmo SHA-1 o SHA-2.Se DEBEN usar firmas separadas.

¿Alguna sugerencia?

CONFIGURACIÓN ACTUAL

Enlace de clientes

<bindings>
  <wsHttpBinding>
    <binding name="WSBC">
      <security mode="TransportWithMessageCredential">
        <transport clientCredentialType="Certificate" proxyCredentialType="None"></transport>
        <message clientCredentialType="UserName" negotiateServiceCredential="false" establishSecurityContext="false" />
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

Punto final del cliente

<client>
  <endpoint address="https://localhost/WcfTestService/Service2.svc"
  behaviorConfiguration="CCB" binding="wsHttpBinding"
  bindingConfiguration="WSBC"
  contract="ServiceReference2.IService2"
  name="wsHttpBinding_IService2" />
</client>

Comportamiento del cliente

<behaviors>,
  <endpointBehaviors>
    <behavior name="MBB">
      <clientCredentials>
        <clientCertificate  findValue="03 58 d3 bf 4b e7 67 2e 57 05 47 dc e6 3b 52 7f f8 66 d5 2a"
                            storeLocation="LocalMachine"
                            storeName="My"
                            x509FindType="FindByThumbprint" />
        <serviceCertificate>
          <defaultCertificate findValue="03 58 d3 bf 4b e7 67 2e 57 05 47 dc e6 3b 52 7f f8 66 d5 2a"
                              storeLocation="LocalMachine"
                              storeName="My"
                              x509FindType="FindByThumbprint"  />
        </serviceCertificate>
      </clientCredentials>
    </behavior>
  </endpointBehaviors>
</behaviors>

Enlace de servicio

<bindings>
  <wsHttpBinding>
    <binding name="ICB">
      <security mode="TransportWithMessageCredential">
        <transport clientCredentialType="Certificate" proxyCredentialType="None"></transport>
        <message    clientCredentialType="UserName" 
                    negotiateServiceCredential="false"
                    establishSecurityContext="false" />
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

Punto final de servicio

<service name="WcfTestService.Service2" behaviorConfiguration="SCB">
    <endpoint     address="" binding="wsHttpBinding" contract="WcfTestService.IService2"
    bindingConfiguration="ICB" name="MS" />
</service>

Comportamiento de servicio

<behaviors>
  <serviceBehaviors>
    <behavior name="SCB">
      <serviceCredentials>
        <serviceCertificate     findValue="4d a9 d8 f2 fb 4e 74 bd a7 36 d7 20 a8 51 e2 e6 ea 7d 30 08"
                                storeLocation="LocalMachine"
                                storeName="TrustedPeople"   
                                x509FindType="FindByThumbprint" />
        <userNameAuthentication 
            userNamePasswordValidationMode="Custom" 
            customUserNamePasswordValidatorType="WcfTestService.UsernameValidator, WcfTestService" />
        <clientCertificate>
          <authentication certificateValidationMode="None" revocationMode="NoCheck" />
        </clientCertificate>
      </serviceCredentials>
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>

Respuestas a la pregunta(4)

Su respuesta a la pregunta