Erstellen von eigenen Codezugriffsberechtigungen

Das .NET Framework stellt einen Satz von Codezugriffsberechtigungsklassen bereit, die eine bestimmte Gruppe von Ressourcen und Operationen schützen. Hierbei liegt der Schwerpunkt auf den durch .NET Framework verfügbar gemachten Ressourcen. Diese Berechtigungsklassen werden im Thema Berechtigungen kurz und in der Referenzdokumentation der jeweiligen Berechtigungsklasse ausführlich beschrieben. Die integrierten Codezugriffsberechtigungen sind für die meisten Umgebungen geeignet. In einigen Situationen empfiehlt es sich jedoch, eine eigene Klasse von Codezugriffsberechtigungen zu definieren. In diesem Thema wird erläutert, wann, weshalb und wie Klassen benutzerdefinierter Codezugriffsberechtigungen definiert werden.

Wenn Sie eine Komponente oder Klassenbibliothek definieren, die auf eine Ressource zugreift, die von den integrierten Berechtigungsklassen nicht abgedeckt wird, jedoch vor nicht autorisiertem Code geschützt werden muss, sollten Sie eine Klasse benutzerdefinierter Codezugriffsberechtigungen erstellen. Wenn Sie deklarative Forderungen für die benutzerdefinierte Berechtigung vornehmen möchten, müssen Sie außerdem eine attribute-Klasse für die Berechtigung definieren. Durch Bereitstellen dieser Klassen und das Ausführen von Forderungen für die Berechtigung aus der Klassenbibliothek kann die Laufzeit verhindern, dass nicht autorisierter Code auf die betreffende Ressource zugreift, und ein Administrator kann Zugriffsrechte konfigurieren.

Eine benutzerdefinierte Berechtigung empfiehlt sich auch für andere Situationen. Wenn eine integrierte Klasse von Codezugriffsberechtigungen eine Ressource schützt, jedoch den Zugriff auf diese nicht ausreichend steuert, benötigen Sie ggf. eine benutzerdefinierte Codezugriffsberechtigung. Angenommen, in einer Anwendung werden Personaldatensätze verwendet, und jeder Datensatz für einen Mitarbeiter ist in einer eigenen Datei gespeichert. In diesem Fall kann der Lese- und Schreibzugriff für unterschiedliche Arten von Mitarbeiterdaten unabhängig voneinander gesteuert werden. Für ein internes Verwaltungstool kann festgelegt werden, dass bestimmte Abschnitte der Personalakte eines Mitarbeiters zwar gelesen, jedoch nicht bearbeitet werden können. Es kann sogar festgelegt werden, dass einige Abschnitte nicht gelesen werden können.

Benutzerdefinierte Codezugriffsberechtigungen bieten sich außerdem an, wenn eine integrierte Berechtigung vorhanden, jedoch nicht so definiert ist, dass sie die Ressource in angemessener Weise schützen kann. So kann u. U. eine Situation vorliegen, in der Funktionen der Benutzeroberfläche, z. B. das Erstellen von Menüs, geschützt werden müssen, dies jedoch durch die integrierte UIPermission-Klasse nicht gegeben ist. In diesem Fall können Sie eine benutzerdefinierte Berechtigung erstellen, durch die das Erstellen von Menüs geschützt wird.

Berechtigungen sollten sich nach Möglichkeit nicht überschneiden. Wenn eine Ressource durch mehrere Berechtigungen geschützt wird, stellt dies ein gravierendes Problem für Administratoren dar. Diese müssen sich dann beim Konfigurieren der Zugriffsrechte für diese Ressource eingehend mit sämtlichen sich überschneidenden Berechtigungen auseinandersetzen.

Das Implementieren einer benutzerdefinierten Codezugriffsberechtigung umfasst mehrere Schritte, von denen einige optional sind. Jeder dieser Schritte wird in einem eigenen Thema erläutert.

  1. Entwerfen einer Berechtigung.

  2. Implementieren der Schnittstellen IPermission und IUnrestrictedPermission.

  3. Implementieren der ISerializable-Schnittstelle, falls dies für die Leistung oder für die Unterstützung spezieller Datentypen erforderlich ist.

  4. Behandeln von XML-Codierung und XML-Decodierung.

  5. Hinzufügen der Unterstützung der deklarativen Sicherheit durch Implementieren einer Attribute-Klasse.

  6. Fordern einer benutzerdefinierten Berechtigung für die Berechtigung (falls erforderlich).

Siehe auch

Referenz

FileIOPermission

UIPermission

IPermission

IUnrestrictedPermission

ISerializable

Konzepte

Sicherheitsberechtigungen

Entwerfen einer Berechtigung

Hinzufügen der Unterstützung der deklarativen Sicherheit

Fordern einer benutzerdefinierten Berechtigung

Weitere Ressourcen

Codezugriffssicherheit

Erweitern von Metadaten mithilfe von Attributen