Entfernen Sie das Timestamp-Element aus den von WCF erstellten ws-security-Headern

Ich verwende einen alten Java-Webdienst von WCF, für den die Anforderung in der folgenden Form erforderlich ist:

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

Die Verwendung des folgenden Konfigurations-Hacks "funktioniert", aber ich möchte nicht, dass der Benutzername und das Passwort in der Konfiguration angezeigt werden:

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

Was ich verwenden möchte, ist etwas in der Art von:

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

Dies erzeugt aber dietimestamp Element im Sicherheitselement, auf das der Java-Webservice zugreift.

Was ich tun muss, ist, den Zeitstempel aus dem XML-Code zu entfernen, den er generiert, oder über eine benutzerdefinierte Bindung zu verfügen, um dies für mich zu tun.

Ich habe versucht, benutzerdefinierte Anmeldeinformationen zu erstellen, dies änderte jedoch nur dieusernameToken Element.

Ich habe bereits viele, viele SO-Fragen (viele von 2007 und früher) angeschaut, einschließlich der folgenden ohne Freude:

Entfernen Sie das Timestamp-Element aus der SicherheitSo passen Sie den WCF-Client an bestimmte WS-Sicherheitsanforderungen an

Was ist die beste, einfachste und eleganteste Möglichkeit, das Zeitstempelelement zu entfernen?

Danke im Voraus

Antworten auf die Frage(1)

Ihre Antwort auf die Frage