Freigeben über


Zugriffsautorisierung für Dienstvorgänge

In diesem Beispiel wird veranschaulicht, wie <serviceAuthorization> element verwendet wird, um die Verwendung des PrincipalPermissionAttribute-Attributs für die Zugriffsautorisierung für Dienstvorgänge zu aktivieren. Dieses Beispiel basiert auf dem Beispiel Beispiel 'Erste Schritte'. Dienst und Client werden mithilfe von wsHttpBinding Element konfiguriert. Das mode-Attribut von Security element wurde auf Message und clientCredentialType wurde auf Windows gesetzt. PrincipalPermissionAttribute wird auf jede Dienstmethode angewandt und für die Beschränkung des Zugriffs auf jeden Vorgang verwendet. Der Aufrufer muss Windows-Administrator sein, um auf jeden Vorgang zugreifen zu können.

In diesem Beispiel ist der Client eine Konsolenanwendung (.exe), und der Dienst wird von IIS (Internet Information Services, Internetinformationsdienste) gehostet.

Tipp

Die Setupprozedur und die Erstellungsanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.

Die Dienstkonfigurationsdatei nutzt <serviceAuthorization> element, um das Attribut principalPermissionMode einzurichten:

<behaviors>
  <serviceBehaviors>
    <behavior name="CalculatorServiceBehavior">
      ...
      <!-- 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 principlePermissionMode auf UseWindowsGroups ermöglicht die Verwendung von PrincipalPermissionAttribute basierend auf Windows-Gruppennamen.

PrincipalPermissionAttribute wird auf jeden Vorgang angewandt, um vom Aufrufer zu verlangen, Teil der Windows-Administratorgruppe zu sein (wie im folgenden Beispielcode gezeigt).

[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. Der Client kommuniziert erfolgreich mit jedem Vorgang, wenn dieser unter einem Konto ausgeführt wird, das Teil der Administratorgruppe ist. Andernfalls wird der Zugang verweigert. Um einen Autorisierungsfehler zu provozieren, führen Sie den Client unter einem Konto aus, das nicht Teil der Administratorgruppe ist. Drücken Sie im Konsolenfenster die EINGABETASTE, um den Client zu schließen.

Ein Dienst kann über Autorisierungsfehler benachrichtigt werden, indem man einen IErrorHandler implementiert. Weitere Informationen über die Implementierung von IErrorHandler finden Sie unter Erweitern der Kontrolle über Fehlerbehandlung und -meldung.

So richten Sie das Beispiel ein, erstellen es und führen es aus

  1. Vergewissern Sie sich, dass Sie die Beispiele zum einmaligen Setupverfahren für Windows Communication Foundation ausgeführt haben.

  2. Zum Erstellen der C#- oder Visual Basic .NET-Version der Projektmappe befolgen Sie die unter Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

  3. Wenn Sie das Beispiel in einer Konfiguration mit einem einzigen Computer oder computerübergreifend ausführen möchten, befolgen Sie die unter Durchführen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.