Подтвердить что ты не робот

Включить SSL для моей службы WCF

У меня есть служба WCF, которая использует basicHttpbinding в разработке.

Теперь в продукте мы хотим использовать SSL, какие изменения мне нужно сделать для принудительного подключения SSL?

4b9b3361

Ответ 1

Эта страница в 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

Ответ 2

Я столкнулся с той же проблемой и нашел эту статью MSDN: Как настроить службу WCF с поддержкой IIS с помощью SSL В конце статьи вы найдете xml-конфигурацию файла WebConfig.

Решение работало для меня отлично. Еще одна вещь, чтобы сказать, имейте в виду, что вам нужен сертификат REAL для вашего выпуска!

Ответ 3

Я думаю, что если под вашими "привязками", где у вас есть <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;
}