2

IIS 7 でホストされている wcf サービスを構成して、定義されたユーザー/グループのみがアクセスできるようにする方法。

既存の構成:

<authentication mode="Windows"/> 

<services>     
 <service name="MyService.Test" behaviorConfiguration="MyService.TestBehavior">
  <endpoint address="" binding="wsHttpBinding" contract="MyService.ITest">
   <identity>
    <dns value="localhost"/>
   </identity>
  </endpoint>
  <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
 </service>
</services>
<behaviors>
 <serviceBehaviors>
  <behavior name="MyService.TestBehavior">
   <serviceMetadata httpGetEnabled="true"/>
   <serviceDebug includeExceptionDetailInFaults="true"/>          
  </behavior>        
 </serviceBehaviors>
</behaviors>

次に、web.config またはファイルまたはフォルダーのファイル システムでアクセス許可 (ユーザーまたはグループ) を構成します。

4

1 に答える 1

2

まず、イントラネット環境にいる場合は、netTcpBindingに切り替えることができます。切り替える必要があります。より高速で柔軟性があり、外部から(ファイアウォールを越えて)誰も呼び出すことができません。完璧です。

次へ-wsHttpBindingとnetTcpBindingを使用してWindowsクレデンシャルをデフォルトでオンにします。WCFの世界では、通常、ファイルやフォルダーを保護することはありません。保護するのはサービス呼び出しです。これは、Windowsクレデンシャルを使用すれば簡単です。サービスの実装にPrincipalPermission属性を追加するだけで、次のことが完了します。

class MyService : IMyService
{
  [PrincipalPermission(SecurityAction.Demand, Role="SysAdmin")]
  public void SensitiveMethod()
  {
   ....
  }
}

正常に動作するはずです。

ファイルとフォルダーを本当に保護する必要がある場合は、いつでもweb.configファイルを使用して、Windowsのユーザー名とグループに基づいて通常のアクセス許可を指定できますが、実際にはWCFとは関係ありません。

マーク

于 2009-07-22T17:27:12.403 に答える