I am using an old Java web service from WCF, which requires a request in the form:
<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>
Using the following hack configuration "works", but I do not want the username and password displayed in config:
<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>
What I want to use is something like:
<binding name="bindingName"> <security mode="TransportWithMessageCredential"> <transport clientCredentialType="Certificate" /> <message clientCredentialType="UserName" /> </security> </binding>
But this generates a timestamp element in the security element that java-webservice starts.
What I need to do is remove the timestamp from the XML it creates or have some kind of special binding to do this for me.
I tried to create user credentials, but that only changed the usernameToken element.
I have already covered many, many SO issues (many from 2007 and earlier), including the following without joy:
What is the best, easiest and most elegant way to remove a timestamp element.
Thank you in advance
source share