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.

ms752243.note(de-de,VS.100).gifHinweis:
Die Setupprozedur und die Buildanweisungen für dieses Beispiel befinden sich am Ende dieses Themas.

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

<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.

Das PrincipalPermissionAttribute wird auf jeden Vorgang angewendet, sodass der Aufrufer Mitglied der Windows-Administratorgruppe sein muss, 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 er unter einem Konto ausgeführt wird, das zur Administratorgruppe gehört. Andernfalls wird der Zugang verweigert. Um einen Autorisierungsfehler zu provozieren, führen Sie den Client unter einem Konto aus, das nicht zur Administratorgruppe gehört. 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. Stellen Sie sicher, dass Sie die Einmaliges Setupverfahren für Windows Communication Foundation-Beispiele ausgeführt haben.

  2. Folgen Sie zum Erstellen der C#- bzw. Visual Basic .NET-Version der Projektmappe den Anweisungen unter Erstellen der Windows Communication Foundation-Beispiele.

  3. Um das Beispiel in einer Konfiguration mit einem Computer oder computerübergreifend auszuführen, folgen Sie den Anweisungen unter Running the Windows Communication Foundation Samples.