У меня есть служба WCF, которая использует basicHttpbinding в разработке.
Теперь в продукте мы хотим использовать SSL, какие изменения мне нужно сделать для принудительного подключения SSL?
У меня есть служба WCF, которая использует basicHttpbinding в разработке.
Теперь в продукте мы хотим использовать SSL, какие изменения мне нужно сделать для принудительного подключения SSL?
Эта страница в MSDN объясняет безопасность привязки WCF.
http://msdn.microsoft.com/en-us/library/ms729700.aspx
Класс BasicHttpBinding прежде всего используется для взаимодействия с существующих веб-сервисов и многих эти услуги размещаются в Интернете Информационные услуги (IIS). Следовательно, транспортная безопасность поскольку эта привязка предназначена для бесшовное взаимодействие с IIS места. Это делается путем установки режим безопасности для транспорта, а затем установка типа учетных данных клиента. Значения типа учетных данных соответствуют к механизмам безопасности каталога IIS. Следующий код показывает режим и набор типов учетных данных к Windows. Вы можете использовать это когда клиент и сервер находятся в одном домене Windows.
С#
BasicHttpBinding b = new BasicHttpBinding(); b.Security.Mode = BasicHttpSecurityMode.Transport ; b.Security.Transport.ClientCredentialType = HttpClientCredentialType.Windows;
Или, в конфигурации:
<bindings> <basicHttpBinding> <binding name="SecurityByTransport"> <security mode="Transport"> <transport clientCredentialType="Windows" /> </security> </binding> </basicHttpBinding> </bindings>
Чтобы включить ssl, без входа в систему, установите для clientCredentialType значение "None".
Параметры режима безопасности:
Нет, Транспорт, Сообщение, TransportWithMessageCredential и TransportCredentialOnly
Вы можете найти более подробную информацию по адресу: http://msdn.microsoft.com/en-us/library/system.servicemodel.basichttpsecuritymode.aspx
Я столкнулся с той же проблемой и нашел эту статью MSDN: Как настроить службу WCF с поддержкой IIS с помощью SSL В конце статьи вы найдете xml-конфигурацию файла WebConfig.
Решение работало для меня отлично. Еще одна вещь, чтобы сказать, имейте в виду, что вам нужен сертификат REAL для вашего выпуска!
Я думаю, что если под вашими "привязками", где у вас есть <Security mode="Transport">
, если вы измените его на <security mode="None">
, вы будете в порядке.
это копия кодовой базы, над которой я работаю, что я сделал это в коде, и, похоже, он работает. Я получаю WSDL по крайней мере, когда я нахожу службу, если это вообще помогает:)
BasicHttpBinding basicBinding = new BasicHttpBinding();
if (RegistryConnectionStringFactory.UseSslForCommunications)
{
basicBinding.Security.Mode = BasicHttpSecurityMode.TransportWithMessageCredential;
basicBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
}
else
{
basicBinding.Security.Mode = BasicHttpSecurityMode.None;
basicBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
}