Службе WCF с WS-Security требуется только подписанная метка времени

Мне нужно предоставить услугу третьей стороне, которая будет отправлять мыльные сообщения с подписанной меткой времени.

Как я могу настроить свой сервис для поддержки этого?

ОБНОВИТЬ Мне удалось приблизиться к формату сообщения Soap, к которому мы стремимся, но WCF настаивает на подписании как имени пользователя, так и маркеров метки времени. Есть ли способ изменить привязку, чтобы подписывать только метку времени?

Дальнейшее обновление Вот наши требования:

Элемент Timestamp ДОЛЖЕН быть подписан.Имя CN в сертификате, используемом для подписи, ДОЛЖНО совпадать с именем пользователя, указанным в элементе UsernameToken.Сертификат, используемый для подписи, ДОЛЖЕН быть отправлен в элементе BinarySecurityToken.Элемент KeyInfo ДОЛЖЕН содержать только элемент SecurityTokenReference, который должен использоваться для ссылки на BinarySecurityToken.НЕОБХОДИМО указать алгоритм канонизации.Метод подписи ДОЛЖЕН быть указан и ДОЛЖЕН быть алгоритмом SHA-1 или SHA-2.Отдельные подписи ДОЛЖНЫ использоваться.

Какие-либо предложения?

ТЕКУЩИЙ КОНФИГ

Привязка клиента

<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>

Конечная точка клиента

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

Поведение клиента

<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>

Служба привязки

<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>

Serice Endpoint

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

Поведение службы

<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>

Ответы на вопрос(4)

Ваш ответ на вопрос