Ситуация:
- У нас есть веб-сервер Windows 2008 с IIS7, (.NET4)
- Мы можем связываться с веб-сервером только через порт HTTPS (443) по умолчанию.
- На серверах размещен сайт ASP.NET, сервис является частью кода сайта.
- Некоторые клиенты (настольные приложения с поддержкой WCF) хотят взаимодействовать с нашим новым веб-сервисом WCF.
- Размер сообщения между сторонами может составлять 100 - 400 кб.
- Мы хотели бы сохранить часть службы WCF в IIS.
- На стороне клиента мы запрашиваем индивидуальное имя пользователя и пароль для подключения к нашему сервису.
- Есть более длинные сеансы с большим количеством обработок БД
- А бывают быстрые короткие сессии - вроде пинга от клиента
- Пароли клиентов хранятся на нашем веб-сервере (из БД) - клиенты должны аутентифицироваться по этим паролям.
Вопрос:
1. Из этих ограничений, какой протокол лучше всего использовать?
2. Будете ли вы использовать сеансы по умолчанию?
3. Сначала попробовали эту привязку (она работает , однако нет поддержки сеанса)
<!--define a SOAP binding-->
<wsHttpBinding>
<binding name="DefaultSOAPBasedHTTPSBinding" maxReceivedMessageSize="400000">
<readerQuotas maxArrayLength="102400" />
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
</wsHttpBinding>
Чтобы включить сеансы:
<wsHttpBinding>
<binding name="DefaultSOAPBasedHTTPSBinding" maxReceivedMessageSize="400000">
<readerQuotas maxArrayLength="102400" />
<reliableSession enabled="true" />
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Basic" />
<message clientCredentialType="Certificate"/>
</security>
</binding>
</wsHttpBinding>
Мне кажется, что этот транспорт и безопасность сообщений - это слишком много - я имею в виду, действительно ли нам это нужно, чтобы разрешать сеансы с wsHttpBinding?