Zugriffsautorisierung für DienstvorgängeAuthorizing Access to Service Operations

Dieses Beispiel veranschaulicht, wie die <ServiceAuthorization > um Verwendung ermöglichen der PrincipalPermissionAttribute Attribut, um den Zugriff auf Dienstvorgänge autorisieren.This sample demonstrates how to use the <serviceAuthorization> to enable use of the PrincipalPermissionAttribute attribute to authorize access to service operations. Dieses Beispiel basiert auf der Einstieg Beispiel.This sample is based on the Getting Started sample. Im Dienst-als auch mit konfiguriert werden die <WsHttpBinding >.The service and client are configured using the <wsHttpBinding>. Die mode Attribut von der <Sicherheit > vorsieht Message und clientCredentialType vorsieht Windows.The mode attribute of the <security> has been set to Message and clientCredentialType has been set to Windows. PrincipalPermissionAttribute wird auf jede Dienstmethode angewandt und für die Beschränkung des Zugriffs auf jeden Vorgang verwendet.The PrincipalPermissionAttribute is applied to each service method and used to restrict access to each operation. Der Aufrufer muss Windows-Administrator sein, um auf jeden Vorgang zugreifen zu können.The caller must be a Windows administrator to access each operation.

In diesem Beispiel ist der Client eine Konsolenanwendung (.exe), und der Dienst wird von IIS (Internet Information Services, Internetinformationsdienste) gehostet.In this sample, the client is a console application (.exe) and the service is hosted by Internet Information Services (IIS).

Hinweis

Die Setupprozedur und die Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.The setup procedure and build instructions for this sample are located at the end of this topic.

Die Dienstkonfigurationsdatei verwendet das <ServiceAuthorization > festzulegende der principalPermissionMode Attribut: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>  

Die Einrichtung von principalPermissionMode auf UseWindowsGroups ermöglicht die Verwendung von PrincipalPermissionAttribute basierend auf Windows-Gruppennamen.Setting the principalPermissionMode to UseWindowsGroups enables the use of PrincipalPermissionAttribute based on Windows group names.

Das PrincipalPermissionAttribute wird auf jeden Vorgang angewendet, sodass der Aufrufer Mitglied der Windows-Administratorgruppe sein muss, wie im folgenden Beispielcode gezeigt.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;  
}  

Wenn Sie das Beispiel ausführen, werden die Anforderungen und Antworten für den Vorgang im Clientkonsolenfenster angezeigt.When you run the sample, the operation requests and responses are displayed in the client console window. Der Client kommuniziert erfolgreich mit jedem Vorgang, wenn er unter einem Konto ausgeführt wird, das zur Administratorgruppe gehört. Andernfalls wird der Zugang verweigert.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. Um einen Autorisierungsfehler zu provozieren, führen Sie den Client unter einem Konto aus, das nicht zur Administratorgruppe gehört.To experiment with authorization failure, run the client under an account that is not part of the Administrators group. Drücken Sie im Konsolenfenster die EINGABETASTE, um den Client zu schließen.Press ENTER in the console window to shut down the client.

Ein Dienst kann über Autorisierungsfehler benachrichtigt werden, indem man einen IErrorHandler implementiert.A service can be notified of authorization failures by implementing an IErrorHandler. Finden Sie unter erweitern Steuerelement über Fehlerbehandlung und Berichterstattung Informationen zur Implementierung IErrorHandler.See Extending Control Over Error Handling and Reporting for information about implementing IErrorHandler.

So können Sie das Beispiel einrichten, erstellen und ausführenTo set up, build, and run the sample

  1. Stellen Sie sicher, dass Sie ausgeführt haben die Setupprozedur für die Windows Communication Foundation-Beispiele zum einmaligen.Ensure that you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. Um die C#- oder Visual Basic .NET-Edition der Projektmappe zu erstellen, befolgen Sie die unter Building the Windows Communication Foundation Samplesaufgeführten Anweisungen.To build the C# or Visual Basic .NET edition of the solution, follow the instructions in Building the Windows Communication Foundation Samples.

  3. Um das Beispiel in einer Einzelcomputer- oder computerübergreifenden Konfiguration ausführen möchten, folgen Sie den Anweisungen Ausführen der Windows Communication Foundation-Beispiele.To run the sample in a single- or cross-computer configuration, follow the instructions in Running the Windows Communication Foundation Samples.

Siehe auchSee Also