Your best bet would be BasicHttpBinding with security set to TransportWithMessageCredentials and the credential type set to UserName. In this case, your service will be protected by HTTPS (a server certificate for SSL is required, which must be trusted on the clients), and authentication will be provided at the message level using the UserName token profile (SOAP header). You can implement your own password validator .
BasicHttpBinding Configuration Summary:
<bindings>
<basicHttpBinding>
<binding name="Secured">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName" />
</security>
</binding>
</basicHttpBinding>
</bindings>
HTTPS, HttpTransport, TextMessageEncoding , UserNameOverTransport. allowInsecureTransport true (, WSDL).
:
<bindings>
<customBinding>
<binding name="Secured">
<security authenticationMode="UserNameOverTransport" allowInsecureTransport="true" />
<textMessageEncoding messageVersion="Soap11" />
<httpTransport />
</binding>
</cutomBinding>
</bindings>