Remova o elemento timestamp dos cabeçalhos ws-security criados pelo WCF
Estou consumindo um serviço da Web Java antigo do WCF que requer a solicitação no formulário:
<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>
Usar o seguinte corte de configuração "funciona", mas não quero o nome de usuário e a senha expostos na configuração:
<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>
O que eu quero usar é algo como:
<binding name="bindingName">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Certificate" />
<message clientCredentialType="UserName" />
</security>
</binding>
Mas isso gera otimestamp
elemento no elemento de segurança, no qual o serviço web java é bloqueado.
O que preciso fazer é remover o registro de data e hora do XML gerado ou ter algum tipo de ligação personalizada para fazer isso por mim.
Tentei criar credenciais personalizadas, mas isso só mudou ousernameToken
elemento.
Eu já examinei muitas e muitas questões de SO (muitas de 2007 e anteriores), incluindo as seguintes sem nenhuma alegria:
Remova o elemento Timestamp do SecurityComo fazer com que o cliente WCF esteja em conformidade com o WS-Security específicoQual é a melhor, mais simples e mais elegante maneira de remover o elemento de carimbo de data / hora.
desde já, obrigado