COM+-rollenbasierte Sicherheit und das .NET Framework
.NET Framework bietet Mechanismen zum Integrieren von verwaltetem Code mit COM+-Sicherheitsdiensten. Diese Funktion basiert auf dem Windows NT-Token, das ausführbarem Code als Grundlage der Identität zugeordnet ist.
Rollenbasierte Sicherheit
Rollenbasierte Sicherheit ermöglicht Ihnen das Definieren von Rollen für eine Anwendung, sodass die Autorisierung der Anwendung auf Komponenten-, Methoden- oder Schnittstellenebene auf Grundlage der Mitgliedschaft in diesen Rollen durchgeführt wird. Sowohl COM+ als auch .NET Framework gestatten das Definieren von Rollen auf Anwendungsebene. Die rollenbasierten Sicherheitsmechanismen von .NET Framework und COM+ sind unabhängig voneinander, und in einer Anwendung kann nur ein Mechanismus verwendet werden.
Die COM+-Sicherheit basiert auf Windows NT-Konten und dem Identitätswechsel von Prozessen/Threads. Wenn der verwaltete Code Authentifizierungsdienste bereitstellt, muss er ein Windows NT-Sicherheitstoken abrufen und vor dem Aufrufen eines COM-Objekts einen Identitätswechsel durchführen.
Anwendungs- und Komponentenzugriffssteuerung
COM+ ermöglicht die Aktivierung von Sicherheit auf Anwendungs- oder auf Klassenebene. Sicherheit auf Anwendungsebene wird mithilfe des ApplicationAccessControlAttribute-Attributs festgelegt, wie im folgenden Beispielcode gezeigt.
[assembly: ApplicationAccessControl (AccessChecksLevel=AccessChecksLevelOption. ApplicationComponent)]
Die Abstufung der Zugriffsüberprüfung bei einer Anwendung konfigurieren Sie mithilfe der Application- oder der ApplicationComponent-Eigenschaft. Die erstgenannte Eigenschaft aktiviert Zugriffsüberprüfungen ausschließlich auf Anwendungsebene. Auf der Komponenten-, Schnittstellen- und Methodenebene erfolgen keine Zugriffsüberprüfungen. Ist der Aufrufer ein Mitglied mindestens einer Rolle, die in der Anwendung definiert ist, verläuft der Aufruf eines Objekts, einer Schnittstelle oder einer Methode erfolgreich. Die letztgenannte Eigenschaft aktiviert Zugriffsüberprüfungen auf allen Ebenen. Die Verwendung von ApplicationComponent ist wesentlich nützlicher, weil sie anzeigt, dass rollenbasierte Zugriffsüberprüfungen auf Komponenten-, Schnittstellen- und Methodenebene angewendet werden.
Bei Verwendung der ApplicationComponent-Eigenschaft werden nur Zugriffsüberprüfungen auf Komponentenebene aktiviert. Um die tatsächliche Durchführung von Zugriffsüberprüfungen für eine bestimmte Komponente sicherzustellen, muss das ComponentAccessControlAttribute-Attribut verwendet werden.
Sicherheit auf Komponentenebene kann mithilfe des ComponentAccessControlAttribute-Attributs aktiviert werden. Dieses Attribut kann auf eine Klasse (wie im folgenden Beispielcode gezeigt), eine Schnittstelle oder eine Methode angewendet werden.
[ComponentAccessControl(true)]
public class CreditAccount : ServicedComponent
{
}
Vor dem Festlegen der Sicherheit für eine Komponente müssen Sie die Sicherheit für die Anwendung aktivieren, die die Komponente enthält. Zugriffsüberprüfungen werden nur vorgenommen, wenn Sie das ApplicationAccessControlAttribute-Attribut auf die Assembly anwenden und das ApplicationAccessControlAttribute-Attribut auf ApplicationComponent festlegen.
Die Ebene, auf der die Sicherheitssteuerung aktiviert ist, bestimmt, wann die Rollenmitgliedschaft eines Aufrufers überprüft wird. In der folgenden Tabelle wird beschrieben, wie die Rollenmitgliedschaft von Aufrufern in Abhängigkeit davon überprüft wird, ob Sicherheit auf Anwendungs- oder auf Komponentenebene aktiviert ist.
Anwendungssicherheit | Komponentensicherheit | Zeitpunkt der Überprüfung der Rollenmitgliedschaft |
---|---|---|
Aktiviert |
Deaktiviert |
Die Rollenmitgliedschaft wird bei jedem Zugriff des Aufrufers auf die Anwendung überprüft. |
Aktiviert |
Aktiviert |
Die Rollenmitgliedschaft wird zusätzlich zur Zugriffsüberprüfung auf Anwendungsebene für jede Klasse, für die Sicherheit auf Klassenebene aktiviert ist, überprüft. Durch die Festlegung auf Komponentenebene wird die rollenbasierte Sicherheit auf Klassen-, Schnittstellen- und Methodenebene aktiviert. |
Deaktiviert |
Aktiviert/Deaktiviert |
Deaktiviert Sicherheit für alle Klassen in der Anwendung. |
Hinzufügen von Rollen zu einer Anwendung
Rollen können einer Anwendung mithilfe des SecurityRoleAttribute-Attributs hinzugefügt und dann Komponenten zugeordnet werden, wie im folgenden Beispielcode gezeigt.
[SecurityRole("Teller", Description="Bank teller role")]
public class CreditAccount : ServicedComponent
{
}
Dieses Attribut ermöglicht das Erstellen von Rollen sowie das Zuweisen von Rollen zu Mitgliedschaftsanforderungen für eine Anwendung, Komponente, Schnittstelle oder Methode. Die Anwendung dieses Attributs auf eine Assembly im Ganzen stellt sicher, dass die Rolle im COM+-Katalog vorhanden ist. Wird dieses Attribut auf eine Komponente angewendet, wird dadurch sichergestellt, dass die Rolle in der Anwendungskonfiguration vorhanden ist, und die Zielkomponente wird der Rolle zugeordnet.
Wenn die SetEveryoneAccess-Eigenschaft auf true festgelegt ist, wird die Rolle Everyone als Mitglied hinzugefügt. Die Standardeinstellung ist false. Dies bedeutet, dass einer Rolle keine Benutzer zugewiesen sind. Stattdessen müssen Sie sie manuell konfigurieren.
Sicherheitsrollen werden auf Assembly-, Klassen-, Methoden- und Schnittstellenebene unterstützt. Genau wie bei anderen Methodenattributen wird die Sicherheitskonfiguration gegenwärtig nicht von der Schnittstellendefinition und der Methodenimplementierung gemeinsam genutzt.
Die SecurityCallContext-Klasse bietet Zugriff auf den Aufrufkontext der COM+-Sicherheit und ähnelt dem SecurityCallContext-Objekt in Visual Basic, ist aber nicht damit identisch. Programmgesteuert werden keine neuen Instanzen erstellt, aber sie werden über die CurrentCall-Eigenschaft abgerufen. Die verbleibenden, in der folgenden Tabelle beschriebenen Eigenschaften rufen Methoden für das SecurityCallContext-Objekt auf.
Eigenschaft | Bemerkung |
---|---|
Callers |
Ruft das Callers-Element aus dem SecurityCallContext-Objekt in COM+ ab und gibt das Element als SecurityCallers-Objekt zurück. |
CurrentCall |
Gibt einen Verweis auf ein dem aktuellen Aufruf zugeordnetes SecurityCallContext-Objekt zurück. |
DirectCaller |
Ruft das DirectCaller-Element aus dem SecurityCallContext-Objekt in COM+ ab und gibt das Element als SecurityIdentity-Objekt zurück. |
MinAuthenticationLevel |
Ruft das MinAuthenticationLevel-Element aus dem SecurityCallContext-Objekt in COM+ ab. |
NumCallers |
Ruft das NumCallers-Element aus dem SecurityCallContext-Objekt in COM+ ab. |
OriginalCaller |
Ruft das OriginalCaller-Element aus dem SecurityCallContext-Objekt in COM+ ab und gibt das Element als SecurityIdentity-Objekt zurück. |
Siehe auch
Referenz
SecurityRoleAttribute
System.EnterpriseServices
Konzepte
Zusammenfassung der verfügbaren COM+-Dienste
Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.