Включить SSL для моей службы WCF - PullRequest
37 голосов
/ 09 января 2009

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

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

Ответы [ 3 ]

44 голосов
/ 09 января 2009

Эта страница в MSDN объясняет безопасность привязки WCF.

http://msdn.microsoft.com/en-us/library/ms729700.aspx

Класс BasicHttpBinding в основном используется для взаимодействия с существующие веб-сервисы и многие эти услуги размещены в Интернете Информационные службы (IIS). Следовательно, транспортная безопасность для этого привязка предназначена для бесшовное взаимодействие с IIS места. Это делается путем установки режим безопасности для транспорта, а затем установка типа учетных данных клиента. Значения учетных данных соответствуют в механизмы безопасности каталогов IIS. Следующий код показывает режим устанавливается и тип учетных данных установлен в Windows. Вы можете использовать это конфигурация, когда и клиент, и сервер находится в одном домене Windows.

C #

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 значение «Нет».

Варианты режима безопасности:

Нет, Транспорт, Сообщение, TransportWithMessageCredential и TransportCredentialOnly

Более подробную информацию вы можете найти по адресу: http://msdn.microsoft.com/en-us/library/system.servicemodel.basichttpsecuritymode.aspx

1 голос
/ 09 января 2013

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

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

0 голосов
/ 24 марта 2010

Я думаю, что если под вашими "привязками", где у вас есть <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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...