Моя служба WCF комплектуется .NET 3.5, и я использовал wsHttpBinding при реализации своей службы.
Для клиентов .NET 3.5 проблем не было, но у клиентов .NET 2.0 и Java были проблемы в wsHttpBinding.
Итак, я добавил новую конечную точку с basicHttpBinding с такой же безопасностью, как wsHttpBinding, имея в виду следующие критерии:
- Я хотел бы использовать пользовательское имя пользователя / пароль, пока включена защита транспорта.
- Аутентификация Windows невозможна.
- Я бы не хотел добавлять пользовательские заголовки к сообщениям SOAP для аутентификации.
Моя основная конфигурация HttpBinding:
<basicHttpBinding>
<binding name="MyService.basicSecureBinding">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" proxyCredentialType="None"/>
<message clientCredentialType="UserName" algorithmSuite="Basic128"/>
</security>
</binding>
</basicHttpBinding>
и в ServiceBehavior Пользовательский класс UsernameValidator объявлен.
Но похоже, что «TransportWithMessageCredential» нельзя использовать из клиентов .NET 2.0
и для того, чтобы включить пользовательскую проверку имени пользователя, необходима безопасность сообщений.
Есть ли у вас какие-либо предложения или рекомендации для решения этой проблемы?