サービス操作へのアクセスの承認Authorizing Access to Service Operations

このサンプルでは、を使用して、 <serviceAuthorization> サービス操作へのアクセスを承認するために属性を使用できるようにする方法を示し PrincipalPermissionAttribute ます。This sample demonstrates how to use the <serviceAuthorization> to enable use of the PrincipalPermissionAttribute attribute to authorize access to service operations. このサンプルは、はじめにのサンプルに基づいています。This sample is based on the Getting Started sample. サービスとクライアントは、を使用して構成され <wsHttpBinding> ます。The service and client are configured using the <wsHttpBinding>. modeの属性 <security> がに設定され、 Message clientCredentialType がに設定されてい Windows ます。The mode attribute of the <security> has been set to Message and clientCredentialType has been set to Windows. PrincipalPermissionAttribute は各サービス メソッドに適用され、各操作へのアクセスを制限するために使用されます。The PrincipalPermissionAttribute is applied to each service method and used to restrict access to each operation. 呼び出し元は、各操作にアクセスできる Windows 管理者である必要があります。The caller must be a Windows administrator to access each operation.

この例では、クライアントはコンソール アプリケーション (.exe) であり、サービスはインターネット インフォメーション サービス (IIS) によってホストされます。In this sample, the client is a console application (.exe) and the service is hosted by Internet Information Services (IIS).

注意

このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。The setup procedure and build instructions for this sample are located at the end of this topic.

サービス構成ファイルでは、を使用して <serviceAuthorization> 属性を設定し principalPermissionMode ます。The service configuration file uses the <serviceAuthorization> to set the principalPermissionMode attribute:

<behaviors>  
  <serviceBehaviors>  
    <behavior>
      <!-- The serviceAuthorization behavior sets the  
           principalPermissionMode to UseWindowsGroups.  
           This puts a WindowsPrincipal on the current thread when a   
           service is invoked. -->  
      <serviceAuthorization principalPermissionMode="UseWindowsGroups" />  
    </behavior>  
  </serviceBehaviors>  
</behaviors>  

principalPermissionModeUseWindowsGroups に設定すると、Windows グループ名に基づいて PrincipalPermissionAttribute を使用できるようになります。Setting the principalPermissionMode to UseWindowsGroups enables the use of PrincipalPermissionAttribute based on Windows group names.

呼び出し元が Windows 管理者グループのメンバーであることを要求するため、PrincipalPermissionAttribute が各操作に適用されます。次のサンプル コードを参照してください。The PrincipalPermissionAttribute is applied to each operation to require the caller to be part of the Windows administrators group, as shown in the following sample code.

[PrincipalPermission(SecurityAction.Demand,
                             Role = "Builtin\\Administrators")]  
public double Add(double n1, double n2)  
{  
    double result = n1 + n2;  
    return result;  
}  

このサンプルを実行すると、操作要求および応答がクライアントのコンソール ウィンドウに表示されます。When you run the sample, the operation requests and responses are displayed in the client console window. クライアントが管理者グループのメンバーであるアカウントで実行される場合、クライアントは各操作と正常に通信できます。それ以外のアカウントで実行される場合、アクセスは拒否されます。The client successfully communicates with each operation if it is running under an account that is part of the Administrators group; otherwise, access is denied. 承認エラーを試すには、管理グループのメンバーではないアカウントでクライアントを実行します。To experiment with authorization failure, run the client under an account that is not part of the Administrators group. クライアントをシャットダウンするには、コンソール ウィンドウで Enter キーを押します。Press ENTER in the console window to shut down the client.

IErrorHandler を実装すると、サービスに承認エラーを通知することができます。A service can be notified of authorization failures by implementing an IErrorHandler. の実装の詳細については、「エラー処理およびレポートに対する制御の拡張」を参照してください IErrorHandlerSee Extending Control Over Error Handling and Reporting for information about implementing IErrorHandler.

サンプルをセットアップ、ビルド、および実行するにはTo set up, build, and run the sample

  1. Windows Communication Foundation サンプルの1回限りのセットアップ手順を実行したことを確認します。Ensure that you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. ソリューションの C# 版または Visual Basic .NET 版をビルドするには、「 Building the Windows Communication Foundation Samples」の手順に従います。To build the C# or Visual Basic .NET edition of the solution, follow the instructions in Building the Windows Communication Foundation Samples.

  3. サンプルを単一コンピューター構成または複数コンピューター構成で実行するには、「 Windows Communication Foundation サンプルの実行」の手順に従います。To run the sample in a single- or cross-computer configuration, follow the instructions in Running the Windows Communication Foundation Samples.