Diese Dokumentation wurde archiviert und wird nicht länger gepflegt.

Autorisierung in Ansprüche unterstützenden Webanwendungen und -diensten

Veröffentlicht: April 2011

Letzte Aktualisierung: Juni 2015

Betrifft: Azure

  • Zugriffssteuerung für Microsoft Azure Active Directory (auch Zugriffssteuerungsdienst oder ACS)

  • Windows® Identity Foundation (WIF)

  • ASP.NET

  • Windows Communication Foundation (WCF)

In einer Anwendung einer vertrauenden Seite bestimmt die Autorisierung, auf welche Ressourcen eine authentifizierte Identität zugreifen kann und welche Vorgänge mit diesen Ressourcen ausgeführt werden dürfen. Unsachgemäße oder schwache Autorisierung führt zur Veröffentlichung von Informationen oder Datenmanipulation. In diesem Thema werden die verfügbaren Vorgehensweisen zum Implementieren von Autorisierung für Ansprüche unterstützende ASP.NET-Webanwendungen und -dienste mithilfe von ACS und WIF beschrieben.

  • Aufführen der Autorisierungsmethoden, die Ansprüche verwenden.

  • Umreißen des Entwurfs für jede Vorgehensweise in der Übersicht.

  • Nennen der Vor- und Nachteile jeder Vorgehensweise.

Seit der ersten Version bietet .NET Framework einen flexiblen Mechanismus zum Implementieren von Autorisierung. Dieser Mechanismus basiert auf zwei einfachen Schnittstellen: IPrincipal und IIentity. Konkrete Implementierungen von IIentity stellen einen authentifizierten Benutzer dar. Die Implementierung WindowsIdentity stellt z. B. einen Benutzer dar, der durch Active Directory authentifiziert wird, und GenericIdentity stellt einen Benutzer dar, der durch einen benutzerdefinierten Authentifizierungsvorgang authentifiziert wird. Konkrete Implementierungen von IPrincipal überprüfen die Berechtigungen mithilfe von Rollen abhängig vom Rollenspeicher. WindowsPrincipal überprüft z. B., ob WindowsIdentity Mitglied in Active Directory-Gruppen ist. Diese Überprüfung erfolgt durch Aufrufen der Methode IsInRole für die Schnittstelle IPrincipal. Die Überprüfung des Zugriffs basierend auf Rollen wird als RBAC (Role-Based Access Control, rollenbasierte Zugriffssteuerung) bezeichnet. RBAC wird im Abschnitt "Rollenbasierte Zugriffssteuerung" in diesem Thema erläutert. Ansprüche können zum Übermitteln von Informationen zu Rollen verwendet werden, um vertraute, rollenbasierte Autorisierungsmechanismen zu unterstützen.

Ansprüche können außerdem verwendet werden, um vielfältigere Autorisierungsentscheidungen zu ermöglichen, die über Rollen hinausgehen. Ansprüche können auf praktisch beliebigen Angaben basieren - Alter, Postleitzahl, Schuhgröße usw. Die Überprüfung des Zugriffs basierend auf beliebigen Ansprüchen wird als CBAC (Claims-Based Access Control, anspruchsbasierte Zugriffssteuerung) bezeichnet. CBAC wird im Abschnitt "Anspruchsbasierte Zugriffssteuerung" in diesem Thema erläutert.

Die Autorisierungsüberprüfungen werden auf der Anwendungsseite und nicht auf der ACS-Seite ausgeführt. ACS dient dabei als Sicherheitstokendienst (Security Token Service, STS), der Token ausstellt, die die Ansprüche an die Anwendung übertragen. Die Token werden von Identitätsanbietern und optional auch durch ACS mithilfe des Regelmoduls um Ansprüche ergänzt. Wenn die Anwendung das Token mit Ansprüchen empfängt, kann sie das Token analysieren, die relevanten Ansprüche extrahieren und dann Autorisierungsentscheidungen mithilfe von RBAC oder eines anspruchsbasierten Ansatzes treffen. WIF wird zum Analysieren und zum Bereitstellen des Tokens für Autorisierungsentscheidungen über eine einfach zu verwendende API (Application Programming Interface) verwendet. Weitere Informationen zu WIF finden Sie im WIF-SDK (http://go.microsoft.com/fwlink/?LinkID=187481). Berücksichtigen Sie die folgende Abbildung, wenn Sie Überlegungen zur Autorisierung in Ansprüche unterstützenden Anwendungen und Diensten anstellen. Beachten Sie, dass der Identitätsanbieter bei erfolgreicher Authentifizierung ein Token generiert (Das IdP-Token in der Abbildung). Das IdP-Token kann vom ACS-Regelmodul transformiert werden. ACS kann die Ansprüche hinzufügen, entfernen oder ändern, die im Token enthalten sind, das der Identitätsanbieter ausstellt. Schließlich wird das von ACS ausgestellte Token an die Anwendung gesendet und von WIF verarbeitet. Die Zugriffsüberprüfung wird in WIF mithilfe der RBAC- oder der CBAC-Vorgehensweise ausgeführt.

WIF-Autorisierung für ACS v2

RBAC ist eine Autorisierungsmethode, bei der Benutzerberechtigungen von einer Anwendung basierend auf Benutzerrollen verwaltet und durchgesetzt werden. Wenn ein Benutzer eine Rolle inne hat, die zum Ausführen einer Aktion erforderlich ist, wird der Zugriff erteilt. Andernfalls wird der Zugriff verweigert.

Verwenden Sie zum Implementieren der RBAC-Vorgehensweise in Ansprüche unterstützenden Anwendungen die Methode IsInRole() der Schnittstelle IPrinicpal auf die gleiche Weise wie in Anwendungen, die keine Ansprüche unterstützen. Es gibt verschiedene Möglichkeiten, die Methode IsInRole() zu verwenden:

  • Ausdrücklicher Aufruf für IPrincipal.IsInRole("Administrator"). Bei dieser Vorgehensweise ist das Ergebnis ein boolescher Wert. Verwenden Sie ihn in Ihren Bedingungsanweisungen. Er kann an einer beliebigen Stelle in Ihrem Code verwendet werden.

  • Verwenden der Sicherheitsforderung PrincipalPermission.Demand(). Bei dieser Vorgehensweise ist das Ergebnis eine Ausnahme, wenn die Forderung nicht erfüllt wird. Ihre Ausnahmebehandlungsstrategie sollte dies berücksichtigen. Für das Auslösen von Ausnahmen entsteht unter Leistungsgesichtspunkten im Vergleich zum Abrufen eines booleschen Werts mehr Aufwand. Dieser Vorgang kann an einer beliebigen Stelle in Ihrem Code verwendet werden.

  • Verwenden der deklarativen Attribute [PrincipalPermission(SecurityAction.Demand, Role = "Administrator")]. Diese Vorgehensweise wird als deklarativ bezeichnet, weil sie zum Ausstatten von Methoden verwendet wird. Sie kann nicht in Codeblöcken innerhalb der Implementierungen der Methode verwendet werden. Das Ergebnis ist eine Ausnahme, wenn die Forderung nicht erfüllt wird. Sie sollten sicherstellen, dass Ihre Ausnahmebehandlungsstrategie dies berücksichtigt.

  • Verwenden von URL-Autorisierung mithilfe des Abschnitts <authorization> in der Datei web.config. Diese Vorgehensweise eignet sich, wenn Sie die Autorisierung auf URL-Ebene verwalten. Bei dieser Ebene handelt es sich um die gröbste Ebene der genannten Ebenen. Der Vorteil dieser Vorgehensweise besteht darin, dass Änderungen in der Konfigurationsdatei vorgenommen werden. Dies bedeutet, dass der Code nicht kompiliert werden sollte, um die Änderung zu nutzen.

Wenn die Methode IsInRole() aufgerufen wird, erfolgt eine Überprüfung, ob der aktuelle Benutzer diese Rolle inne hat. In Ansprüche unterstützenden Anwendungen wird die Rolle durch einen Rollenanspruchstyp ausgedrückt, der im Token verfügbar sein sollte. Der Rollenanspruchstyp wird mithilfe des folgenden URIs ausgedrückt:

http://schemas.microsoft.com/ws/2008/06/identity/claims/role

Es gibt mehrere Methoden, ein Token durch einen Rollenanspruchstyp zu ergänzen:

CBAC (Claims-Based Access Control, anspruchsbasierte Zugriffssteuerung) ist ein Autorisierungsverfahren, bei dem die Autorisierungsentscheidung, Zugriff zu erteilen oder zu verweigern, auf beliebiger Programmlogik basiert, die die in den Ansprüchen verfügbaren Daten verwendet, um die Entscheidung zu treffen. Beachten Sie, dass im Fall von RBAC der einzige verwendete Anspruch der Rollentypanspruch ist. Ein Rollentypanspruch wurde zum Überprüfen verwendet, ob der Benutzer zu der jeweiligen Rolle gehört. Führen Sie sich anhand der folgenden Schritte vor Augen, wie die Autorisierungsentscheidungen mithilfe der anspruchsbasierten Autorisierungsmethode getroffen werden:

  1. Die Anwendung empfängt eine Anforderung.

  2. Die Anwendung extrahiert die eingehenden Ansprüche.

  3. Die Anwendung übergibt die Ansprüche an den Entscheidungslogikmechanismus. Dabei kann es sich um Code im Arbeitsspeicher oder um einen Aufruf eines Webdiensts bzw. um eine Abfrage einer Datenbank handeln. Es kann auch ein anspruchsvolles Regelmodul aufgerufen werden.

  4. Der Entscheidungsmechanismus berechnet das Ergebnis basierend auf den Ansprüchen.

  5. Der Zugriff wird erteilt, wenn das Ergebnis WAHR ist und verweigert, wenn das Ergebnis FALSCH ist. Die Regel kann z. B. lauten, dass der Benutzer älter als 21 Jahre ist, in Hamburg lebt und mithilfe von Windows Live ID (Microsoft-Konto) authentifiziert wurde.

ACS fungiert als STS, der Token ausstellt, die die Ansprüche übermitteln. Sie können steuern, welche Ansprüche ausgestellt werden (Typ der Ansprüche und Werte), indem Sie das ACS-Regelmodul verwenden. Weitere Informationen zum ACS-Regelmodul finden Sie unter Regelgruppen und Regeln und Vorgehensweise: Implementieren von Logik zur Tokentransformation mithilfe von Regeln. ClaimsAuthorizationManager ist der Schlüssel für die Implementierung von CBAC in Ansprüche unterstützende Anwendungen. ClaimsAuthorizationManager ist eine Komponente, die im Lieferumfang von WIF enthalten ist. ClaimsAuthorizationManager ermöglicht das Abfangen eingehender Anforderungen und die Implementierung beliebiger Programmlogik Ihrer Wahl zum Treffen von Autorisierungsentscheidungen basierend auf den eingehenden Ansprüchen. Außerdem handelt es sich um eine Erweiterungsmöglichkeit, um Autorisierungsentscheidungen extern zu verarbeiten und vom Anwendungscode zu entkoppeln. Dies kann wichtig sein, wenn die Autorisierungslogik geändert werden muss. In diesem Fall wirkt sich die Verwendung von ClaimsAuthorizationManager nicht auf die Integrität der Anwendung aus, und die Wahrscheinlichkeit eines Anwendungsfehlers als Ergebnis der Änderung wird verringert. Weitere Informationen zum Verwenden von ClaimsAuthenticationManager zum Implementieren von anspruchsbasierter Zugriffssteuerung finden Sie unter Vorgehensweise: Implementieren von Anspruchsautorisierung in einer Ansprüche unterstützenden ASP.NET-Anwendung mithilfe von WIF und ACS.

Siehe auch

Anzeigen: