Включение проверки подлинности на основе сертификатов для службы WCF с использованием netTcpBinding - PullRequest
9 голосов
/ 25 августа 2011

У меня есть служба WCF, которая предоставляется с использованием одной конечной точки с netTcpBinding, которая находится на сервере A , размещенном на IIS7.5 / WAS в нашей внутренней локальной сети в нашем домене.

Затем эта служба используется приложением веб-клиента ASP.NET, расположенным на сервере B , также размещенным на IIS7.5 у внешнего хостинг-провайдера за пределами нашего домена и связанным с нашей локальной сетью через VPN, защищенную дляразрешить только трафик между Сервером A и Сервером B .

Во время разработки, когда я тестировал концепцию, я запустил приложение веб-клиента на другом сервере IIS внутри нашего доменас использованием защиты привязки mode="Transport" и транспорта clientCredentialType="Windows", который работал нормально.

Затем я переместил приложение веб-клиента на внешний Сервер B для дальнейшего тестирования концепции, устанавливающего привязкуsecurity mode="None", так как очевидно, что этот сервер находится за пределами нашего домена, я не могу использовать проверку подлинности Windows, и она все еще работает нормально.

ЧтоМне нужно сделать сейчас, чтобы переключиться обратно на использование безопасности транспорта, чтобы установить clientCredentialType="Certificate", так как вы не можете иметь безопасность транспорта с clientCredentialType="None".

Это то место, где я начал отклеиваться.Я, кажется, иду по кругу относительно того, где в web.config службы и клиенте web.config определить сертификат и где хранить какие биты сертификата.

По сути, что япопытка сделать это - проверить, что Сервер B действительно Сервер B , вызывающий службу на Сервер A , что предотвращает любые проблемы с подделкой или подрывной работой DNS, которые могут привести кслужба на сервере A незаконно доступна.

Я думаю, что мне нужно создать сертификат для сервера B , к которому сервер A имеет открытый ключ для проверкиЭто?В этом случае На сервере B уже установлен сертификат SSL с подстановочным знаком, так как он обслуживает различные наши приложения в качестве поддоменов.Можно ли использовать этот сертификат для аутентификации WCF?

Ни один из вопросов SO, которые я обнаружил, кажется, не покрывает это, и все различные веб-сайты и примеры книг, которые я обнаружил, не так ясны.Похоже, что конфигурация WCF - это нечто черное.

Все это построено с использованием .NET 4 и Visual Basic.Любая помощь будет принята с благодарностью.

1 Ответ

6 голосов
/ 25 августа 2011

В этом примере MSDN есть примеры того, как настроить netTcpBinding с сертификатами как в коде, так и в конфигурации. Просто выберите сценарий, который вам подходит. Сертификат должен быть выдан общедоступным (коммерческим) центром сертификации, таким как VeriSign или Thwate, так что ему будет доверять поставщик внешнего хоста и ваш внутренний сервер.

...