Freigeben über


PrincipalPermission-Klasse

Lässt Vergleiche mit dem aktiven Prinzipal (siehe IPrincipal) mithilfe der Sprachkonstrukte zu, die sowohl für deklarative als auch für imperative Sicherheitsaktionen definiert sind. Diese Klasse kann nicht vererbt werden.

Namespace: System.Security.Permissions
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class PrincipalPermission
    Implements IPermission, IUnrestrictedPermission, ISecurityEncodable
'Usage
Dim instance As PrincipalPermission
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public sealed class PrincipalPermission : IPermission, IUnrestrictedPermission, ISecurityEncodable
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class PrincipalPermission sealed : IPermission, IUnrestrictedPermission, ISecurityEncodable
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class PrincipalPermission implements IPermission, IUnrestrictedPermission, 
    ISecurityEncodable
SerializableAttribute 
ComVisibleAttribute(true) 
public final class PrincipalPermission implements IPermission, IUnrestrictedPermission, 
    ISecurityEncodable

Hinweise

Durch Übergeben von Identitätsinformationen (Benutzername und Rolle) an den Konstruktor können Sie mit PrincipalPermission fordern, dass die Identität des aktiven Prinzipals mit diesen Informationen übereinstimmt.

Damit das aktive IPrincipal und die zugeordnete IIdentity übereinstimmen, müssen die angegebene Identität und die angegebene Rolle übereinstimmen. Beim Verwenden einer NULL (Nothing in Visual Basic)-Identitätszeichenfolge wird diese als Anforderung für eine Übereinstimmung mit beliebigen Identitäten interpretiert. Bei einer NULL (Nothing in Visual Basic)-Rollenzeichenfolge liegt eine Übereinstimmung mit allen Rollen vor. Die Übergabe eines NULL (Nothing in Visual Basic)-Parameters für name oder role an PrincipalPermission führt automatisch zu einer Übereinstimmung bzgl. Identität und Rollen in jedem IPrincipal. Sie können auch eine PrincipalPermission erstellen, mit der lediglich bestimmt wird, ob IIdentity eine authentifizierte oder eine nicht authentifizierte Entität darstellt. In diesem Fall werden name und role ignoriert.

Im Unterschied zu den meisten anderen Berechtigungen erweitert PrincipalPermission die CodeAccessPermission nicht. Es wird jedoch die IPermission-Schnittstelle implementiert. Dies liegt daran, dass PrincipalPermission keine Berechtigung für den Codezugriff darstellt, d. h. der Zugriff wird nicht aufgrund der Identität der ausgeführten Assembly gewährt. Stattdessen ist es möglich, mit Code Aktionen (Demand, Union, Intersect usw.) bzgl. der Identität des aktuellen Benutzers in einer Weise auszuführen, die mit der Art konsistent ist, in der diese Aktionen für Codezugriffs- und Codeidentitätsberechtigungen ausgeführt werden.

Wichtig

Vor Anforderung einer Hauptberechtigung muss die Prinzipalrichtlinie der aktuellen Anwendungsdomäne auf den Enumerationswert WindowsPrincipal festgelegt werden. In der Standardeinstellung ist die Prinzipalrichtlinie auf UnauthenticatedPrincipal festgelegt. Wenn Sie die Prinzipalrichtlinie nicht auf WindowsPrincipal festlegen, tritt bei der Anforderung einer Hauptberechtigung ein Fehler auf. Folgender Code sollte vor Anforderung der Hauptberechtigung ausgeführt werden:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

Beispiel

Im folgenden Codebeispiel werden zwei PrincipalPermission-Objekte erstellt, die verschiedene administrativen Benutzerrollen darstellen. Es wird eine Union der beiden gebildet und eine Anforderung erstellt. Demand ist nur erfolgreich, wenn die aktive Implementierung von IPrincipal entweder den Benutzer Bob in der Rolle Manager oder die Benutzerin Louise in der Rolle Supervisor darstellt.

Dim id1 As String = "Bob"
Dim role1 As String = "Manager"
Dim PrincipalPerm1 As New PrincipalPermission(id1, role1)
       
Dim id2 As String = "Louise"
Dim role2 As String = "Supervisor"
Dim PrincipalPerm2 As New PrincipalPermission(id2, role2)
       
PrincipalPerm1.Union(PrincipalPerm2).Demand()
String id1 = "Bob";
String role1 = "Manager";
PrincipalPermission PrincipalPerm1 = new PrincipalPermission(id1, role1);

String id2 = "Louise";
String role2 = "Supervisor";
PrincipalPermission PrincipalPerm2 = new PrincipalPermission(id2, role2);

(PrincipalPerm1.Union(PrincipalPerm2)).Demand();
String^ id1 = "Bob";
String^ role1 = "Manager";
PrincipalPermission^ PrincipalPerm1 = gcnew PrincipalPermission( id1,role1 );

String^ id2 = "Louise";
String^ role2 = "Supervisor";
PrincipalPermission^ PrincipalPerm2 = gcnew PrincipalPermission( id2,role2 );

(PrincipalPerm1->Union( PrincipalPerm2 ))->Demand();
String id1 = "Bob";
String role1 = "Manager";
PrincipalPermission principalPerm1 = new PrincipalPermission(id1,
    role1);
String id2 = "Louise";
String role2 = "Supervisor";
PrincipalPermission principalPerm2 = new PrincipalPermission(id2,
    role2);
principalPerm1.Union(principalPerm2).Demand();

Vererbungshierarchie

System.Object
  System.Security.Permissions.PrincipalPermission

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

PrincipalPermission-Member
System.Security.Permissions-Namespace
PrincipalPermissionAttribute

Weitere Ressourcen

Sicherheitsberechtigungen
Anfordern von Berechtigungen
Principal