Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Autorisierung ist der Prozess der Ermittlung, welche Entitäten über die Berechtigung zum Ändern, Anzeigen oder anderweitigen Zugriff auf eine Computerressource verfügen. In einem Unternehmen dürfen beispielsweise nur Manager auf die Dateien ihrer Mitarbeiter zugreifen. Windows Communication Foundation (WCF) unterstützt zwei Mechanismen zum Ausführen der Autorisierungsverarbeitung. Mit dem ersten Mechanismus können Sie die Autorisierung mithilfe vorhandener CLR-Konstrukte (Common Language Runtime) steuern. Die zweite ist ein anspruchsbasiertes Modell, das als Identitätsmodell bezeichnet wird. WCF verwendet das Identitätsmodell, um Ansprüche aus eingehenden Nachrichten zu erstellen; Identitätsmodellklassen können erweitert werden, um neue Anspruchstypen für benutzerdefinierte Autorisierungsschemas zu unterstützen. In diesem Thema finden Sie eine Übersicht über die wichtigsten Programmierkonzepte des Identitätsmodellfeatures sowie eine Auflistung der wichtigsten Klassen, die das Feature verwendet.
Identitätsmodellszenarien
Die folgenden Szenarien stellen die Verwendung des Identitätsmodells dar.
Szenario 1: Unterstützen von Identitäts-, Rollen- und Gruppenansprüchen
Benutzer senden Nachrichten an einen Webdienst. Die Zugriffssteuerungsanforderungen des Webdiensts verwenden Identität, Rollen oder Gruppen. Der Absender der Nachricht wird einer Reihe von Rollen oder Gruppen zugeordnet. Rollen- oder Gruppeninformationen werden verwendet, um Zugriffsprüfungen durchzuführen.
Szenario 2: Unterstützung umfangreicher Ansprüche
Benutzer senden Nachrichten an einen Webdienst. Die Zugriffssteuerungsanforderungen des Webdiensts erfordern ein umfangreicheres Modell als Identität, Rollen oder Gruppen. Der Webdienst bestimmt, ob ein bestimmter Benutzer Zugriff auf eine bestimmte geschützte Ressource mit dem umfangreichen anspruchsbasierten Modell hat. Beispielsweise kann ein Benutzer bestimmte Informationen lesen, z. B. Gehaltsinformationen, auf die andere Benutzer keinen Zugriff haben.
Szenario 3: Zuordnung unterschiedlicher Ansprüche
Ein Benutzer sendet eine Nachricht an einen Webdienst. Der Benutzer kann seine Anmeldeinformationen auf verschiedene Arten angeben: X.509-Zertifikat, Benutzernamentoken oder Kerberos-Token. Der Webdienst ist erforderlich, um Zugriffssteuerungsprüfungen auf die gleiche Weise durchzuführen, unabhängig vom Benutzeranmeldeinformationstyp. Werden im Laufe der Zeit zusätzliche Anmeldeinformationstypen unterstützt, sollte das System entsprechend weiterentwickelt werden.
Szenario 4: Ermitteln des Zugriffs auf mehrere Ressourcen
Ein Webdienst versucht, auf mehrere Ressourcen zuzugreifen. Der Dienst bestimmt, auf welche geschützten Ressourcen ein bestimmter Benutzer Zugreifen hat, indem die dem Benutzer zugeordneten Ansprüche mit den Ansprüchen verglichen werden, die für den Zugriff auf die Ressource erforderlich sind.
Identitätsmodellausdrücke
In der folgenden Liste werden die wichtigsten Begriffe definiert, die zum Beschreiben von Identitätsmodellkonzepten verwendet werden.
Autorisierungsrichtlinie
Eine Reihe von Regeln zum Zuordnen einer Reihe von Eingabeansprüchen zu einer Reihe von Ausgabeansprüchen. Die Auswertung von Autorisierungsrichtlinien führt dazu, dass Anspruchsätze einem Bewertungskontext und anschließend einem Autorisierungskontext hinzugefügt werden.
Autorisierungskontext
Eine Gruppe von Anspruchssätzen und 0 (null) oder mehr Eigenschaften. Das Ergebnis der Auswertung einer oder mehrerer Autorisierungsrichtlinien.
Anspruch
Eine Kombination aus einem Anspruchstyp, Recht und einem Wert.
Satz von Ansprüchen
Eine Reihe von Ansprüchen, die von einem bestimmten Emittenten ausgegeben werden.
Anspruchstyp
Eine Art Von Anspruch. Ansprüche, die von der Identitätsmodell-API definiert werden, sind Eigenschaften der ClaimType Klasse. Beispiele für vom System bereitgestellte Anspruchstypen sind Dns, Email, Hash, Name, Rsa, Sid, Spn, System, Thumbprint, Uri und X500DistinguishedName.
Auswertungskontext
Ein Kontext, in dem eine Autorisierungsrichtlinie ausgewertet wird. Er enthält Eigenschaften und Anspruchssätze. Wird zur Grundlage eines Autorisierungskontexts, sobald die Auswertung abgeschlossen ist.
Identitätsanspruch
Ein Anspruch, dessen Berechtigung die Identität ist.
Emittent
Ein Anspruchssatz, der mindestens einen Identitätsanspruch enthält und von dem angenommen wird, dass er einen anderen Anspruchssatz ausgestellt hat.
Eigenschaften
Eine Reihe von Informationen, die einem Auswertungskontext oder Autorisierungskontext zugeordnet sind.
Geschützte Ressource
Etwas im System, das nur verwendet, aufgerufen oder anderweitig bearbeitet werden kann, wenn bestimmte Anforderungen zuerst erfüllt sind.
Richtig
Eine Fähigkeit über eine Ressource. Von der Identitätsmodell-API definierte Rechte sind Eigenschaften der Rights Klasse. Beispiele für vom System bereitgestellte Rechte sind Identity und PossessProperty.
Wert
Etwas, über das ein Recht behauptet wird.
Ansprüche
Das Identitätsmodell ist ein anspruchsbasiertes System. Ansprüche beschreiben die Funktionen, die mit einer Entität im System verknüpft sind, häufig ein Benutzer dieses Systems. Der Satz von Ansprüchen, die einer bestimmten Entität zugeordnet sind, kann als Schlüssel betrachtet werden. Die speziellen Ansprüche definieren die Form dieses Schlüssels, ähnlich wie ein physischer Schlüssel, der zum Öffnen einer Sperre in einer Tür verwendet wird. Ansprüche werden verwendet, um Zugriff auf Ressourcen zu erhalten. Der Zugriff auf eine bestimmte geschützte Ressource wird durch den Vergleich der Ansprüche bestimmt, die erforderlich sind, um auf diese Ressource mit den Ansprüchen zuzugreifen, die der Entität zugeordnet sind, die zugriff versucht.
Ein Anspruch ist der Ausdruck eines Rechts im Hinblick auf einen bestimmten Wert. Ein Recht könnte etwa "Lesen", "Schreiben" oder "Ausführen" lauten. Ein Wert kann eine Datenbank, eine Datei, ein Postfach oder eine Eigenschaft sein. Ansprüche haben auch einen Anspruchstyp. Die Kombination aus Anspruchstyp und Recht bietet den Mechanismus zum Angeben von Funktionen in Bezug auf den Wert. Beispielsweise gibt ein Anspruch vom Typ "File", mit dem Recht "Lesen" über den Wert "Biography.doc" an, dass die Entität, der ein solcher Anspruch zugeordnet ist, Lesezugriff auf die Datei Biography.doc besitzt. Ein Anspruch vom Typ "Name", mit dem Recht "BesitzEigenschaft" über den Wert "Martin", gibt an, dass die Entität, der ein solcher Anspruch zugeordnet ist, eine Namenseigenschaft mit dem Wert "Martin" besitzt.
Obwohl verschiedene Anspruchstypen und -rechte als Teil des Identitätsmodells definiert sind, ist das System erweiterbar, sodass die verschiedenen Systeme, die auf der Identitätsmodellinfrastruktur aufbauen, nach Bedarf zusätzliche Anspruchstypen und -rechte definieren können.
Identitätsansprüche
Ein besonderes Recht ist die Identität. Ansprüche, die über dieses Recht verfügen, machen eine Aussage über die Identität der Entität. Beispielsweise zeigt ein Anspruch vom Typ "Benutzerprinzipalname" (User Principal Name, UPN) mit einem Wert von someone@example.com
und einem Recht auf Identity
, dass eine bestimmte Identität in einer bestimmten Domäne besteht.
Systemidentitätsanspruch
Das Identitätsmodell definiert einen Identitätsanspruch: System
. Der System
Identitätsanspruch gibt an, dass eine Entität die aktuelle Anwendung oder das aktuelle System ist.
Gruppen von Ansprüchen
Das Modell von Ansprüchen, die Identität darstellen, ist wichtig, da Ansprüche immer von einer Entität im System ausgestellt werden, auch wenn diese Entität letztendlich ein Konzept von "Self" ist. Ansprüche werden als Satz gruppiert, und jeder Satz verfügt über einen Aussteller. Ein Aussteller ist lediglich ein Satz von Ansprüchen. Eine solche rekursive Beziehung muss schließlich enden, und jeder Anspruchssatz kann sein eigener Aussteller sein.
Die folgende Abbildung zeigt ein Beispiel mit drei Sätzen von Ansprüchen, wobei ein Satz von Ansprüchen als eigener Aussteller einen Satz von Ansprüchen besitzt, der wiederum den Anspruchssatz "System" als Aussteller aufweist. Aus diesem Grund bilden Gruppen von Ansprüchen eine Hierarchie, die beliebig tief sein kann.
Mehrere Sätze von Ansprüchen können über denselben ausstellenden Anspruchssatz verfügen, wie in der folgenden Abbildung dargestellt:
Mit Ausnahme eines Satzes von Ansprüchen, der sein eigener Aussteller ist, bietet das Identitätsmodell keine Unterstützung dafür, dass Sätze von Ansprüchen eine Schleife erzeugen. Daher kann es nie zu einer Situation kommen, in der der Anspruchssatz A vom Anspruchssatz B ausgestellt wird, der wiederum selbst von Anspruchsatz A ausgestellt wurde. Außerdem bietet das Identitätsmodell keine Unterstützung dafür, dass Anspruchssätze von mehreren Ausstellern stammen. Wenn zwei oder mehr Aussteller eine bestimmte Gruppe von Ansprüchen ausgeben müssen, müssen Sie mehrere Anspruchssätze verwenden, die jeweils dieselben Ansprüche enthalten, aber unterschiedliche Aussteller haben.
Der Ursprung von Ansprüchen
Ansprüche können aus einer Vielzahl von Quellen stammen. Eine allgemeine Quelle von Ansprüchen ist die Anmeldeinformationen eines Benutzers, z. B. als Teil einer an einen Webdienst gesendeten Nachricht. Das System überprüft solche Ansprüche und wird Teil einer Gruppe von Ansprüchen, die dem Benutzer zugeordnet sind. Andere Systemkomponenten können auch Quellen von Ansprüchen sein, einschließlich, aber nicht beschränkt auf das Betriebssystem, den Netzwerkstapel, die Laufzeitumgebung oder die Anwendung. Darüber hinaus können Remotedienste auch eine Quelle von Ansprüchen sein.
Autorisierungsrichtlinien
Im Identitätsmodell werden Ansprüche als Teil des Prozesses der Auswertung der Autorisierungsrichtlinie generiert. Eine Autorisierungsrichtlinie untersucht die (möglicherweise leere) Menge bestehender Behauptungen und kann möglicherweise zusätzliche Behauptungen basierend auf den bereits vorhandenen und zusätzlichen Informationen hinzufügen, die ihr zur Verfügung stehen. Dies stellt die Grundlage für die Zuordnung zwischen Ansprüchen bereit. Das Vorhandensein oder Fehlen von Ansprüchen im System beeinflusst das Verhalten einer Autorisierungsrichtlinie im Hinblick darauf, ob zusätzliche Ansprüche hinzugefügt werden.
Beispielsweise hat die Autorisierungsrichtlinie Zugriff auf eine Datenbank, die die Geburtsdatum der verschiedenen Entitäten enthält, die das System verwenden. Die Autorisierungsrichtlinie verwendet diese Informationen, um dem Kontext ein "Over18"-Attribut hinzuzufügen. Beachten Sie, dass diese Über18-Erklärung keine Informationen über die Entität offenlegt, außer der Tatsache, dass sie über 18 Jahre alt ist. Beachten Sie, dass die Interpretation des Anspruchs "Over18" von dem Verständnis der Semantik dieses Anspruchs abhängt. Die Autorisierungsrichtlinie, die den Anspruch hinzugefügt hat, versteht diese Semantik auf einer bestimmten Ebene. Code, der anschließend die Ansprüche untersucht, die sich aus der Richtlinienauswertung ergeben, wird auch über diese Semantik informiert werden.
Eine bestimmte Autorisierungsrichtlinie kann eine mehrfache Auswertung erfordern, weil durch das Hinzufügen von Ansprüchen durch andere Autorisierungsrichtlinien diese Richtlinie möglicherweise weitere Ansprüche ergänzt. Das Identitätsmodell wurde so konzipiert, dass die Auswertung fortgesetzt wird, bis dem Kontext keine weiteren Ansprüche durch eine der geltenden Autorisierungsrichtlinien hinzugefügt werden. Durch diese fortgesetzte Bewertung von Autorisierungsrichtlinien wird verhindert, dass eine bestimmte Bewertungsreihenfolge in Bezug auf Autorisierungsrichtlinien durchgesetzt werden muss; sie können in beliebiger Reihenfolge ausgewertet werden. Wenn beispielsweise Richtlinie X nur Anspruch Z hinzufügt, wenn Richtlinie A Anspruch B hinzugefügt hat, wird bei der ersten Auswertung von X der Anspruch Z nicht hinzugefügt. Anschließend wird A ausgewertet und addiert Anspruch B. X wird dann ein zweites Mal ausgewertet, und dieses Mal wird Anspruch Z hinzugefügt.
Ein bestimmtes System kann viele Autorisierungsrichtlinien in Kraft haben.
Ein Key-Making Computer
Das Auswerten einer Gruppe zugeordneter Autorisierungsrichtlinien ist wie die Verwendung eines Computers, der Schlüssel macht. Die Autorisierungsrichtlinien werden jeweils evaluiert und Sätze von Ansprüchen generiert. So wird die Form des Schlüssels erzeugt. Sobald die Form der Taste abgeschlossen ist, kann sie verwendet werden, um zu versuchen, einige Sperren zu öffnen. Die Form des Schlüssels wird in einem "Autorisierungskontext" gespeichert, der von einem Autorisierungsmanager erstellt wird.
Autorisierungskontext
Ein Autorisierungs-Manager wertet die verschiedenen Autorisierungsrichtlinien wie beschrieben aus, und das Ergebnis ist ein Autorisierungskontext (eine Gruppe von Anspruchssätzen und einigen zugeordneten Eigenschaften). Der Autorisierungskontext kann untersucht werden, um zu bestimmen, welche Ansprüche in diesem Kontext vorhanden sind, die Beziehungen zwischen diesen verschiedenen Ansprüchen (z. B. dem ausstellenden Anspruchssatz), und sie letztendlich mit einigen Anforderungen vergleichen, die sie erfüllen müssen, um auf eine Ressource zuzugreifen.
Schlösser
Wenn ein Autorisierungskontext (eine Gruppe von Ansprüchen) ein Schlüssel ist, stellen die Anforderungen, die erfüllt sein müssen, um den Zugriff auf eine bestimmte geschützte Ressource zu gewähren, die Sperre dar, die der Schlüssel erfüllen muss. Das Identitätsmodell formalisiert nicht, wie diese Anforderungen ausgedrückt werden, aber aufgrund der anspruchsbasierten Art des Systems müssen die Ansprüche im Autorisierungskontext mit einigen erforderlichen Ansprüchen verglichen werden.
Eine Zusammenfassung
Das Identitätsmodell basiert auf dem Konzept von Ansprüchen. Ansprüche werden in Gruppen gruppiert und in einem Autorisierungskontext aggregiert. Ein Autorisierungskontext enthält einen Satz von Ansprüchen und ist das Ergebnis der Auswertung einer oder mehrerer Autorisierungsrichtlinien, die einem Autorisierungs-Manager zugeordnet sind. Diese Anspruchssätze können untersucht werden, um festzustellen, ob zugriffsanforderungen erfüllt wurden. Die folgende Abbildung zeigt die Beziehungen zwischen diesen verschiedenen Identitätsmodellkonzepten.
WCF- und Identitätsmodell
WCF verwendet die Identitätsmodellinfrastruktur als Grundlage für die Autorisierung. In WCF können Sie mit der ServiceAuthorizationBehavior Klasse Autorisierungsrichtlinien als Teil eines Diensts angeben. Solche Autorisierungsrichtlinien werden als externe Autorisierungsrichtlinien bezeichnet und können die Anspruchsverarbeitung basierend auf der lokalen Richtlinie oder durch Interaktion mit einem Remotedienst ausführen. Der Autorisierungs-Manager, dargestellt durch die ServiceAuthorizationManager Klasse, wertet externe Autorisierungsrichtlinien zusammen mit Autorisierungsrichtlinien aus, die die verschiedenen Anmeldeinformationstypen (Token) erkennen und den sogenannten Autorisierungskontext mit den Ansprüchen auffüllt, die für eine eingehende Nachricht geeignet sind. Der Autorisierungskontext wird durch die AuthorizationContext Klasse dargestellt.
Identitätsmodellprogrammierung
In der folgenden Tabelle wird das Objektmodell beschrieben, das zum Programmieren von Identitätsmodellerweiterungen verwendet wird. Diese Klassen existieren entweder im System.IdentityModel.Policy-Namespace oder im System.IdentityModel.Claims-Namespace.
Klasse | BESCHREIBUNG |
---|---|
Autorisierungskomponente | Eine Identitätsmodellklasse, die die IAuthorizationComponent Schnittstelle implementiert. |
IAuthorizationComponent | Eine Schnittstelle, die eine einzelne schreibgeschützte Zeichenfolgeneigenschaft bereitstellt: ID. Der Wert dieser Eigenschaft ist für jede Instanz im System eindeutig, die diese Schnittstelle implementiert. |
AuthorizationContext | Eine Autorisierungskomponente , die einen Satz von ClaimSet Instanzen mit null oder mehr Eigenschaften enthält; das Ergebnis der Auswertung einer oder mehrerer Autorisierungsrichtlinien. |
Claim | Eine Kombination aus Anspruchstyp, Recht und Wert. Die Rechte und Wertteile werden durch den Anspruchstyp eingeschränkt. |
ClaimSet | Eine abstrakte Basisklasse. Eine Auflistung von Claim -Instanzen. |
DefaultClaimSet | Eine versiegelte Klasse. Eine Implementierung der ClaimSet Klasse. |
EvaluationContext | Eine abstrakte Basisklasse. Wird bei der Richtlinienevaluierung an eine Autorisierungsrichtlinie weitergegeben. |
IAuthorizationPolicy | Eine von IAuthorizationComponent abgeleitete und von Autorisierungsrichtlinienklassen implementierte Schnittstelle. |
Rights | Eine statische Klasse, die vordefinierte rechte Werte enthält. |
Die folgenden Klassen werden auch für die Identitätsmodellprogrammierung verwendet, sind aber nicht im System.IdentityModel.Policy oder System.IdentityModel.Claims Namespace zu finden.
Klasse | BESCHREIBUNG |
---|---|
ServiceAuthorizationManager | Eine Klasse, die eine Methode zum CheckAccessCoreAusführen von anspruchsbasierten Autorisierungsprüfungen für jeden Vorgang in einem Dienst bereitstellt. Sie müssen von der Klasse ableiten und die Methode überschreiben. |
ServiceAuthorizationBehavior | Eine versiegelte Klasse, die verschiedene Eigenschaften im Zusammenhang mit dem Verhalten eines Diensts im Zusammenhang mit der Autorisierung bereitstellt. |
ServiceSecurityContext | Eine Klasse, die den Sicherheitskontext, einschließlich des Autorisierungskontexts, für den derzeit ausgeführten oder ausgeführten Vorgang bereitstellt. Eine Instanz dieser Klasse ist Teil der OperationContext. |
Wichtige Mitglieder
Die folgenden Mitglieder werden häufig verwendet, um neue Anspruchstypen zu erstellen.
Mitglied | BESCHREIBUNG |
---|---|
CheckAccessCore | Abgeleitete Klassen implementieren diese Methode, um anspruchsbasierte Zugriffsprüfungen vor dem Ausführen von Vorgängen in einem Dienst durchzuführen. Alle Informationen im bereitgestellten OperationContext oder anderswo können untersucht werden, wenn die Zugriffsprüfungsentscheidung getroffen wird. Wenn CheckAccessCoretrue zurückgibt, wird der Zugriff gewährt, und der Vorgang kann ausgeführt werden. Wenn CheckAccessCore false zurückgibt, wird der Zugriff verweigert, und der Vorgang wird nicht ausgeführt. Ein Beispiel finden Sie unter How to: Create a Custom Authorization Manager for a Service. |
ServiceAuthorizationManager | Gibt den ServiceAuthorizationManager für den Dienst zurück. Der ServiceAuthorizationManager ist für Autorisierungsentscheidungen verantwortlich. |
ExternalAuthorizationPolicies | Die Sammlung von benutzerdefinierten Autorisierungsrichtlinien, die für den Dienst angegeben sind. Diese Richtlinien werden zusätzlich zu den Richtlinien evaluiert, die mit den Anmeldeinformationen in eingehenden Nachrichten verbunden sind. |
Siehe auch
- AuthorizationContext
- Claim
- EvaluationContext
- IAuthorizationComponent
- IAuthorizationPolicy
- Rights
- System.IdentityModel.Claims
- System.IdentityModel.Policy
- System.IdentityModel.Tokens
- System.IdentityModel.Selectors
- Ansprüche und Token
- Ansprüche und Verweigern des Zugriffs auf Ressourcen
- Anspruchserstellung und Ressourcenwerte
- Vorgehensweise: Erstellen eines benutzerdefinierten Anspruchs
- Vorgehensweise: Vergleichen von Ansprüchen
- Vorgehensweise: Erstellen einer benutzerdefinierten Autorisierungsrichtlinie
- Vorgehensweise: Erstellen eines benutzerdefinierten Autorisierungs-Managers für einen Dienst
- Sicherheitsübersicht
- Autorisierung