Если вы размещаете свою службу WCF в IIS, она будет работать в рабочем процессе ASP.NET, что означает, что вы можете настроить аутентификацию и авторизацию, как если бы вы использовали веб-службы ASMX:
<system.Web>
<authentication mode="Windows"/>
<authorization>
<allow roles=".\Administrators"/>
<deny users="*"/>
</authorization>
</system.Web>
Затем вам придется отключить анонимный доступ к вашей конечной точке в IIS и вместо этого включить Встроенная проверка подлинности Windows .
В консоли управления IIS это можно сделать, вызвав ' Диалог свойств 'для вашего виртуального каталога. Затем вы найдете настройки безопасности на вкладке « Безопасность каталога ».
Конечно, единственным доступным каналом связи будет HTTP. Клиенты должны будут указать свою идентификационную информацию Windows в запросе на транспортном уровне 1013 * со следующими параметрами:
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WindowsSecurity">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="https://localhost/myservice"
binding="wsHttpBinding"
bindingConfiguration="WindowsSecurity"
contract="IMyService" />
</client>
</system.serviceModel>
Обратите внимание, что если ваша конечная точка службы использует wsHttpBinding , вам также придется добавить SSL к вашей конечной точке, так как это требование применяется WCF при использовании безопасности транспортного уровня.
Если вместо этого вы перейдете на basicHttpBinding , вы сможете использовать менее безопасный режим аутентификации, доступный в WCF, который называется TransportCredentialOnly , где SSL больше не требуется.
Для получения более подробной информации, здесь - хороший обзор инфраструктуры безопасности в WCF.