Какой сценарий безопасности WCF мне следует использовать? - PullRequest
0 голосов
/ 29 октября 2009

Я новичок в WCF и поражен возможностями, доступными для защиты моей службы WCF. Какая модель безопасности лучше всего подходит для этой ситуации?

Сервер: Должен иметь доступ к контексту определенного общедоступного приложения ASP.Net, работающего на IIS 6. Однако служба должна быть доступна только одному клиенту в интрасети. По сути, сервис должен выполнять операции на общедоступном веб-сайте, но сам сервис должен быть полностью недоступен для публики. Я хотел бы избежать использования SSL для сервиса.

Клиент: Приложение интрасети ASP.Net, работающее на собственном сервере (на другом компьютере, чем указанное выше приложение, но также с использованием IIS 6). В сервисе будет только этот единственный клиент.

Код кажется довольно простым - у меня есть контракт на обслуживание в общей библиотеке между двумя приложениями ASP.Net. Мне нужна большая помощь в выяснении того, как настроить каждый web.config для обеспечения некоторого типа безопасности, чтобы общедоступный доступ к «серверному» приложению вообще не мог использовать службу, тогда как «клиентское» веб-приложение имеет полный доверенный доступ. к услуге.

1 Ответ

0 голосов
/ 29 октября 2009

Количество опций и их комбинаций действительно ошеломляет, поэтому и Microsoft, и известный гуру WCF Джувал Лоуи придумали «сценарии безопасности», которые должны помочь вам сосредоточиться на нескольких управляемых сценариях, которые могут оказаться полезными.

Смотрите это сообщение в блоге J.D. Meier для подхода Microsoft, и идеи Ювала лучше всего изложены в серии статей в блоге Дэвида Сакштейна .

Для внутреннего межсетевого брандмауэра лучше всего подойдет netTcpBinding с защитой транспортного уровня и учетными данными Windows.

ОБНОВЛЕНИЕ: К сожалению, netTcpBinding можно использовать только на IIS7 / WAS (с Vista, Win Srv 2008), и не поддерживается на IIS6 :-(

Для этого сценария вам потребуется либо использовать одну из привязок HTTP, либо создать хост для своей службы на основе NetTCP (консольное приложение, служба NT).

Марк

Обновление:

если вы хотите убедиться, что только локальные пользователи, являющиеся членами вашего домена Active Directory, могут получить доступ к вашему сервису, лучше всего использовать учетные данные Windows в качестве механизма аутентификации. В этом случае внешний пользователь, не имеющий учетной записи Windows в вашем домене, не сможет использовать эту службу и будет отклонен.

Возможно, вы могли бы настроить basicHttpBinding или wsHttpBinding с защитой транспорта, используя учетные данные Windows, для вашей службы. Если вы используете безопасность транспорта, вы будете использовать адреса https: //, и в вашей сети должен быть включен адрес SSL, но, с другой стороны, вам не нужно идентифицировать службу с помощью сертификата.

Ваш сервисный конфиг будет выглядеть примерно так:

<bindings>
  <basicHttpBinding>
    <binding name="securedBasicHttp">
      <security mode="Transport">
        <transport clientCredentialType="Windows"/>
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
<services>
  <service name="MyService">
    <endpoint name="Default"
              address="MyService"
              binding="basicHttpBinding"
              bindingConfiguration="securedBasicHttp"
              contract="IMyService" /> 
   </service>
</services>

Хорошим ресурсом для получения дополнительной информации, а также с видео-инструкциями, могут служить Шаблоны и практика. Руководство по безопасности WCF для Codeplex - отлично, хотя иногда и немного подавляюще.

Вы также можете проверить этот список статей с инструкциями по MSDN :

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...