Безопасность сообщений WsHttpBinding с учетными данными клиента UserName требует сертификата сервера.Единственный вариант - использовать учетные данные клиента Windows, но в этом случае ваш клиент и служба должны находиться в одном домене AD (или доверенных доменах).Если вы хотите защитить сообщение (зашифровать и подписать), вам нужна такая инфраструктура.
Редактировать:
На основании вашего комментария вам не нужна безопасность сообщений, вы толькохотите использовать профиль UserNameToken для передачи учетных данных клиента по незащищенному каналу.Это возможно в WCF 4 (и в более старых версиях со специальными КБ).Попробуйте это пользовательское связывание:
<customBinding>
<binding name="UsernamePasswordOverHttp">
<textMessageEncoding messageVersion="Soap11" />
<security
authenticationMode="UserNameOverTransport"
messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10"
allowInsecureTransport="true" />
<httpTransport />
</binding>
</customBinding>
Имейте в виду, что может быть некоторая проблема с автогенерацией WSDL для такой службы.Другой возможностью является использование ClearUserNameBidning .