Autenticação usando cabeçalho de autorização HTTP na API do WCF SOAP

Atualmente, temos uma API do WCF SOAP que permite ao consumidor autenticar usando um nome de usuário e senha (internamente usa umUserNamePasswordValidator) Para referência, o nome de usuário e senha são passados ​​no corpo SOAP da seguinte maneira:

<o:Security xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" mustUnderstand="1">
<Timestamp Id="_0">
    <Created>
        2013-04-05T16:35:07.341Z</Created>
        <Expires>2013-04-05T16:40:07.341Z</Expires>
    </Timestamp>
    <o:UsernameToken Id="uuid-ac5ffd20-8137-4524-8ea9-3f4f55c0274c-12">
        <o:Username>someusername</o:Username>
        <o:Password o:Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">somepassword
    </o:Password>
</o:UsernameToken>
</o:Security>

Nós gostamos deAlém disso apoiar um consumidor a especificar credenciais noCabeçalho de autorização HTTP, como Basic auth ou umToken do portador OAuth

Já temos várias maneiras de realmente fazer a autenticação para APIs não-SOAP, mas não estou familiarizado com como dizer ao WCF para usar qualquer classe que eu possa criar para isso. Como posso fazer isso? A única outra questão que tenho visto que tenta responder éAqui, mas a resposta aceita usa cabeçalhos SOAP, e não os cabeçalhos HTTP, e o comprador essencialmente desistiu.

Obviamente, qualquer solução precisa ser compatível com versões anteriores - precisamos continuar a oferecer suporte aos clientes, especificando credenciais no cabeçalho de segurança SOAP.

questionAnswers(3)

yourAnswerToTheQuestion