Лучшим для вашего случая может быть BasicHttpBinding с безопасностью, установленной на TransportWithMessageCredentials, и типом учетных данных, равной UserName. В этом случае ваша служба будет защищена с помощью HTTPS (требуется сертификат сервера для SSL, который должен быть доверенным на клиентах), а аутентификация будет обеспечиваться на уровне сообщений с помощью профиля токена имени пользователя (заголовок SOAP). Вы можете реализовать свой собственный средство проверки пароля .
Базовый скелет конфигурации BasicHttpBinding:
<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>