Удалить элемент timestamp из заголовков ws-security, созданных WCF

Я использую старый веб-сервис Java от WCF, который требует запрос в форме:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Header>
        <wsse:Security mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss- wssecurity-secext-1.0.xsd">
            <wsse:UsernameToken wsu:Id="xxx" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-ssecurity-utility-1.0.xsd">
                <wsse:Username>username</wsse:Username>
                <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password>
            </wsse:UsernameToken>
        </wsse:Security>
    </s:Header>
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        ...
    </s:Body>
</s:Envelope>

Использование следующего хака конфигурации «работает», но я не хочу, чтобы имя пользователя и пароль были указаны в конфигурации:

<binding name="bindingName">
      <security mode="Transport">
        <transport clientCredentialType="Certificate" />
      </security>
</binding>
...
<endpoint address="https://endpoint address"
      binding="basicHttpBinding" bindingConfiguration="bindingName"
      contract="contract"
      name="bindingName">

    <headers>
        <wsse:Security mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss- wssecurity-secext-1.0.xsd">
            <wsse:UsernameToken wsu:Id="UsernameToken-8293453" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-ssecurity-utility-1.0.xsd">
                <wsse:Username>username</wsse:Username>
                <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password>
            </wsse:UsernameToken>
        </wsse:Security>
    </headers>
</endpoint>

Я хочу использовать что-то вроде:

<binding name="bindingName">
    <security mode="TransportWithMessageCredential">
        <transport clientCredentialType="Certificate" />
        <message clientCredentialType="UserName" />
    </security>
</binding>

Но это порождаетtimestamp элемент в элементе безопасности, на котором скрывается веб-служба Java.

Что мне нужно сделать, это удалить метку времени из XML, который он генерирует, или иметь какую-то пользовательскую привязку, чтобы сделать это для меня.

Я пытался создать пользовательские учетные данные, но это только изменилоusernameToken элемент.

Я уже посмотрел на многие, многие вопросы SO (многие из 2007 и ранее), включая следующие без радости:

Удалить элемент Timestamp из SecurityКак заставить клиента WCF соответствовать определенному WS-Security

Какой самый лучший, самый простой и самый элегантный способ удалить элемент timestamp.

заранее спасибо

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

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