Zugriffssteuerungsmechanismen
Sie können den Zugriff auf mehrere Arten mit Windows Communication Foundation (WCF) kontrollieren. 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 über WCF in Delegierung und Identitätswechsel mit WCF erklärt.
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 über zur Verwendung des Attributs finden Sie unter Vorgehensweise: Einschränken des Zugriffs mit der PrincipalPermissionAttribute-Klasse. Weitere Informationen über zur Identität finden Sie unter Dienstidentität und Authentifizierung.
ASP.NET-Mitgliedschaftsanbieter
Eine Funktion 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, muss sich der Benutzer mit seinem Benutzernamen und Kennwort anmelden.
Hinweis: |
---|
Sie müssen die Datenbank zunächst über die ASP.NET-Funktion mit Daten füllen, bevor ein WCF-Dienst sie für die Autorisierung verwenden kann. |
Sie können die Mitgliedschaftsfunktion auch verwenden, wenn Sie bereits eine Mitgliedschaftsdatenbank von einer bestehenden ASP.NET-Website haben und möchten, dass dieselben Benutzer mit denselben Benutzernamen und Kennwörtern Ihren Dienst nutzen können.
Weitere Informationen über zur Verwendung der Mitgliedschaftsfunktion in einem WCF-Dienst finden Sie unter Gewusst wie: Verwenden des ASP.NET-Mitgliedschaftsanbieters.
ASP.NET-Rollenanbieter
Eine weitere Funktion von ASP.NET ist die Fähigkeit, Autorisierung mit Rollen zu verwalten. Der ASP.NET-Rollenanbieter ermöglicht den Entwicklern, Rollen für Benutzer zu erstellen und jedem Benutzer eine oder mehrere Rollen zuzuweisen. 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. Wie bei der Mitgliedschaftsfunktion können WCF-Entwickler die Informationen in der Datenbank verwenden, um Dienstbenutzer 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 eine bestehende ASP.NET-Rollenanbieterdatenbank haben und dieselben Regeln und Benutzerzuweisungen in Ihrem WCF-Dienst nutzen möchten.
Weitere Informationen über zum Verwenden der Rollenanbieterfunktion finden Sie unter Vorgehensweise: Verwenden des Rollenanbieters für den ASP.NET bei einem Dienst.
Autorisierungs-Manager
Eine andere Funktion 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-Rollenmanager bietet eine API, mit der Sie Anwendungsrollen verwalten, Benutzern Rollen hinzufügen und entziehen und Rollenmitgliedschaften überprüfen können. Sie können damit jedoch nicht abfragen, ob ein Benutzer zum Ausführen einer benannten Aufgabe oder eines Vorgangs autorisiert ist. 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 bestehende AzMan-Installation verfügen und Ihre Dienstbenutzer über die Funktionen der AzMan/Rollenanbieter-Kombination autorisieren möchten.
Weitere Informationen über über AzMan und den ASP.NET-Rollenanbieter finden Sie unter How To: Use Authorization Manager (AzMan) with ASP.NET 2.0 (in englischer Sprache). Weitere Informationen über über die Verwendung von AzMan und vom Rollenanbieter 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, bei dem Sie von der anspruchbasierten Zugriffskontrolle des Identitätsmodells profitieren können, ist die Verwendung von Verbundsanmeldeinformationen beim Szenario mit ausgestellten Token. Weitere Informationen über zum Verbund und ausgestellten Tokens finden Sie unter Verbund und ausgestellte Token.
Weitere Informationen über zum Identitätsmodell finden Sie unter Verwalten von Ansprüchen und Autorisierung mit dem Identitätsmodell.
Siehe auch
Aufgaben
Vorgehensweise: Einschränken des Zugriffs mit der PrincipalPermissionAttribute-Klasse
Vorgehensweise: Verwenden des Rollenanbieters für den ASP.NET bei einem Dienst
Verweis
Konzepte
Vorgehensweise: Verwenden des Rollenanbieters für den ASP.NET-Autorisierungs-Manager bei einem Dienst
Verwalten von Ansprüchen und Autorisierung mit dem Identitätsmodell
Delegierung und Identitätswechsel mit WCF