Удалить элемент 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.
заранее спасибо