IISでWCFサービスをホストしている場合、ASP.NETワーカープロセスで実行されます。つまり、ASMXWebサービスの場合と同じように認証と承認を構成できます。
<system.Web>
<authentication mode="Windows"/>
<authorization>
<allow roles=".\Administrators"/>
<deny users="*"/>
</authorization>
</system.Web>
次に、IISでエンドポイントへの匿名アクセスを無効にし、代わりに Windows統合認証を有効にする必要があります。
IIS管理コンソールで、仮想ディレクトリの[プロパティ]ダイアログを表示してこれを行います。次に、[ディレクトリセキュリティ]タブにセキュリティ設定が表示されます。
もちろん、利用可能な通信チャネルはHTTPのみです。クライアントは、次の設定を使用して、トランスポートレベルでリクエストにWindowsIDを提供する必要があります。
<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を使用すると、SSLが不要になったTransportCredentialOnlyと呼ばれるWCFで利用可能な安全性の低い認証モードを使用できます。
詳細については、WCFのセキュリティインフラストラクチャの概要を以下に示します。