Zugriffssteuerungsmechanismen

Der Zugriff kann mit Windows Communication Foundation (WCF) auf verschiedene Arten gesteuert werden. In diesem Thema werden kurz die verschiedenen Mechanismen besprochen und Vorschläge dazu unterbreitet, wann die einzelnen Mechanismen eingesetzt werden sollten. Dies soll Ihnen die Wahl des richtigen Mechanismus erleichtern. Die Zugriffstechnologien sind in der Reihenfolge der Komplexität aufgelistet. Die einfachste Technologie ist das PrincipalPermissionAttribute; die komplexeste ist das Identitätsmodell.

Zusätzlich zu diesen Mechanismen werden Identitätswechsel und Delegierung mit WCF unter Delegierung und Identitätswechsel mit WCF erläutert.

PrincipalPermissionAttribute

Das PrincipalPermissionAttribute wird verwendet, um den Zugriff auf eine Dienstmethode einzuschränken. Wenn das Attribut auf eine Methode angewendet wird, kann es verwendet werden, um die Identität eines bestimmten Aufrufers oder dessen Mitgliedschaft in einer Windows-Gruppe oder ASP.NET-Rolle anzufordern. Wenn der Client mit einem X.509-Zertifikat authentifiziert ist, erhält er eine primäre Identität, die aus dem Betreffnamen und dem Fingerabdruck des Zertifikats besteht.

Verwenden Sie das PrincipalPermissionAttribute, um den Zugriff auf Ressourcen auf dem Computer zu kontrollieren, auf dem der Dienst ausgeführt wird, sofern der Benutzer des Diensts immer zur selben Windows-Domäne gehört, auf der der Dienst ausgeführt wird. Sie können ganz einfach Windows-Gruppen erstellen, die über festgelegte Zugriffsebenen verfügen (z. B. kein Zugriff, schreibgeschützter Zugriff oder Schreibzugriff).

Weitere Informationen zur Verwendung des Attributs finden Sie unter Vorgehensweise: Einschränken des Zugriffs mit der PrincipalPermissionAttribute-Klasse. Weitere Informationen zur Identität finden Sie unter Dienstidentität und Authentifizierung.

ASP.NET-Mitgliedschaftsanbieter

Ein Feature von ASP.NET ist der Mitgliedschaftsanbieter. Obwohl der Mitgliedschaftsanbieter technisch gesehen kein Mechanismus zur Zugriffskontrolle ist, ermöglicht er eine Kontrolle des Zugriffs auf den Dienst, indem er die Anzahl der möglichen Identitäten begrenzt, die auf die Endpunkte des Diensts zugreifen können. Die Mitgliedschaftsfunktion umfasst eine Datenbank, in die der Benutzername und das Kennwort eingegeben werden können, mit denen Benutzer einer Website Konten auf der Site einrichten können. Um auf einen Dienst zuzugreifen, der den Mitgliedschaftsanbieter verwendet, müssen sich Benutzer*innen mit ihrem Benutzernamen und Kennwort anmelden.

Hinweis

Sie müssen die Datenbank zunächst über das ASP.NET-Feature mit Daten füllen, bevor ein WCF-Dienst sie für die Autorisierung verwenden kann.

Sie können das Mitgliedschaftsfeature auch verwenden, wenn Sie bereits über eine Mitgliedschaftsdatenbank einer bereits vorhandenen ASP.NET-Website verfügen und möchten, dass die gleichen Benutzer*innen Ihren Dienst mit den gleichen Benutzernamen und Kennwörtern nutzen können.

Weitere Informationen zur Verwendung des Mitgliedschaftsfeatures in einem WCF-Dienst finden Sie unter Vorgehensweise: Verwenden des ASP.NET-Mitgliedschaftsanbieters.

ASP.NET-Rollenanbieter

Ein weiteres Feature von ASP.NET ist die Möglichkeit, die Autorisierung mit Rollen zu verwalten. Der ASP.NET-Rollenanbieter ermöglicht es Entwickler*innen, Rollen für Benutzer*innen zu erstellen und ihnen eine oder mehrere Rollen zuzuweisen. Genau wie beim Mitgliedschaftsanbieter werden die Rollen und Zuweisungen in einer Datenbank gespeichert und können mithilfe der Tools, die durch eine bestimmte Implementierung des ASP.NET-Rollenanbieters bereitgestellt wurden, mit Daten gefüllt werden. Genau wie beim Mitgliedschaftsfeature können WCF-Entwickler*innen die Informationen in der Datenbank verwenden, um Dienstbenutzer*innen nach Rollen zu autorisieren. Beispielsweise können Sie den Rollenanbieter gemeinsam mit dem oben beschriebenen PrincipalPermissionAttribute-Mechanismus zur Zugriffskontrolle verwenden.

Sie können den ASP.NET-Rollenanbieter auch verwenden, wenn Sie über eine bereits vorhandene ASP.NET-Rollenanbieterdatenbank verfügen und die gleichen Regeln und Benutzerzuweisungen in Ihrem WCF-Dienst nutzen möchten.

Informationen zur Verwendung des Rollenanbieterfeatures finden Sie unter Vorgehensweise: Verwenden des Rollenanbieters für ASP.NET bei einem Dienst.

Autorisierungs-Manager

Ein weiteres Feature kombiniert den Autorisierungs-Manager (AzMan) mit dem ASP.NET-Rollenanbieter, um Clients zu autorisieren. Wenn ASP.NET einen Webdienst hostet, kann AzMan so in die Anwendung integriert werden, dass die Autorisierung für den Dienst über AzMan erfolgt. Der ASP.NET-Rollen-Manager bietet eine API, mit der Sie Anwendungsrollen verwalten, Benutzer*innen Rollen hinzufügen und entziehen sowie Rollenmitgliedschaften überprüfen können. Sie können damit jedoch nicht abfragen, ob Benutzer*innen befugt sind, eine Aufgabe oder einen Vorgang auszuführen. AzMan ermöglicht es Ihnen, einzelne Vorgänge zu definieren und sie in Aufgaben zu kombinieren. Mit AZMan können Sie neben Rollenüberprüfungen auch feststellen, ob ein Benutzer eine Aufgabe ausführen kann. Rollenzuweisungen und Aufgabenautorisierungen können außerhalb der Anwendung konfiguriert oder programmgesteuert innerhalb der Anwendung ausgeführt werden. Das Snap-In der Microsoft Management Console (MMC) für die AzMan-Verwaltung ermöglicht Administratoren, die Aufgaben zu ändern, die eine Rolle während der Laufzeit ausführen kann, und die Rollenmitgliedschaft jedes Benutzers zu verwalten.

Sie können AzMan und den ASP.NET-Rollenanbieter auch verwenden, wenn Sie bereits über Zugriff auf eine AzMan-Installation verfügen und Ihre Dienstbenutzer*innen über die Features der Kombination aus AzMan und Rollenanbieter autorisieren möchten.

Weitere Informationen zur Verwendung des Autorisierungs-Managers (AzMan) und des ASP.NET-Rollenanbieters finden Sie unter How To: Use Authorization Manager (AzMan) with ASP.NET 2.0 (Vorgehensweise: Verwenden des Autorisierungs-Managers (AzMan) mit ASP.NET 2.0). Weitere Informationen zur Verwendung des Autorisierungs-Managers (AzMan) und des Rollenanbieters für WCF-Dienste finden Sie unter Vorgehensweise: Verwenden des Rollenanbieters für den ASP.NET-Autorisierungs-Manager bei einem Dienst.

Identitätsmodell

Das Identitätsmodell besteht aus einem Satz APIs, die Ihnen ermöglichen, Ansprüche und Richtlinien zu verwalten, um Clients zu autorisieren. Mit dem Identitätsmodell können Sie jeden Anspruch prüfen, der in den vom Benutzer zur Authentifizierung beim Dienst verwendeten Anmeldeinformationen enthalten ist. Anschließend können Sie die Ansprüche mit den Richtlinien für diesen Dienst vergleichen und den Zugriff entsprechend gewähren oder verweigern.

Verwenden Sie das Identitätsmodell, wenn Sie eine präzise Steuerung wünschen und bestimmte Kriterien festlegen möchten, bevor Sie den Zugriff gewähren. Wenn Sie z. B. das PrincipalPermissionAttribute verwenden, besteht das Kriterium ganz einfach darin, dass der Benutzer authentifiziert sein und zu einer bestimmten Rolle gehören muss. Dagegen können Sie mit dem Identitätsmodell eine Richtlinie erstellen, die besagt, dass der Benutzer über 18 Jahre alt sein und einen gültigen Führerschein besitzen muss, bevor er ein Dokument anzeigen darf.

Ein Beispiel für den Nutzen, den Ihnen die anspruchsbasierte Zugriffssteuerung des Identitätsmodells bieten kann, ist die Verwendung von Verbundanmeldeinformationen im Szenario für ausgestellte Token. Weitere Informationen zu Verbund und ausgestellten Token finden Sie hier.

Weitere Informationen zum Identitätsmodell finden Sie unter Verwalten von Ansprüchen und Autorisierung mit dem Identitätsmodell.

Siehe auch