PrincipalPermission Klasa

Definicja

Przestroga

Code Access Security is not supported or honored by the runtime.

Umożliwia kontrole względem aktywnej jednostki (zobacz IPrincipal) przy użyciu konstrukcji języka zdefiniowanych zarówno dla akcji deklaratywnych, jak i imperatywnych zabezpieczeń. Klasa ta nie może być dziedziczona.

public ref class PrincipalPermission sealed : System::Security::IPermission, System::Security::Permissions::IUnrestrictedPermission
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class PrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
type PrincipalPermission = class
    interface IPermission
    interface ISecurityEncodable
    interface IUnrestrictedPermission
[<System.Obsolete("Code Access Security is not supported or honored by the runtime.", DiagnosticId="SYSLIB0003", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
type PrincipalPermission = class
    interface IPermission
    interface ISecurityEncodable
    interface IUnrestrictedPermission
[<System.Serializable>]
type PrincipalPermission = class
    interface IPermission
    interface IUnrestrictedPermission
    interface ISecurityEncodable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PrincipalPermission = class
    interface IPermission
    interface IUnrestrictedPermission
    interface ISecurityEncodable
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PrincipalPermission = class
    interface IPermission
    interface ISecurityEncodable
    interface IUnrestrictedPermission
Public NotInheritable Class PrincipalPermission
Implements IPermission, IUnrestrictedPermission
Dziedziczenie
PrincipalPermission
Atrybuty
Implementuje

Przykłady

Poniższy przykład wymaga, aby aktywny podmiot zabezpieczeń był administratorem. Parametr name to null, który umożliwia każdemu użytkownikowi, który jest administratorem, przekazać żądanie.

Uwaga

W systemie Windows Vista kontrola konta użytkownika (UAC) określa uprawnienia użytkownika. Jeśli jesteś członkiem wbudowanej grupy Administratorzy, masz przypisane dwa tokeny dostępu w czasie wykonywania: token dostępu użytkownika standardowego i token dostępu administratora. Domyślnie jesteś w roli użytkownika standardowego. Aby wykonać kod, który wymaga, aby być administratorem, musisz najpierw podnieść poziom uprawnień od użytkownika standardowego do administratora. Możesz to zrobić po uruchomieniu aplikacji, klikając prawym przyciskiem myszy ikonę aplikacji i wskazując, że chcesz uruchomić jako administrator.

using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Security::Policy;
using namespace System::Security::Principal;

int main(array<System::String ^> ^args)
{
    System::String^ null;
    AppDomain::CurrentDomain->SetPrincipalPolicy(PrincipalPolicy::WindowsPrincipal);
    PrincipalPermission^ principalPerm = gcnew PrincipalPermission(null, "Administrators" );
      principalPerm->Demand();
      Console::WriteLine("Demand succeeded");
    return 0;
}
using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;

class SecurityPrincipalDemo
{

    public static void Main()
    {
        AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
        PrincipalPermission principalPerm = new PrincipalPermission(null, "Administrators");
        principalPerm.Demand();
        Console.WriteLine("Demand succeeded.");
    }
}
Imports System.Threading
Imports System.Security.Permissions
Imports System.Security.Principal



Class SecurityPrincipalDemo


    Public Shared Sub Main()
        AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
        Dim principalPerm As New PrincipalPermission(Nothing, "Administrators")
        principalPerm.Demand()
        Console.WriteLine("Demand succeeded.")

    End Sub
End Class

Uwagi

Przestroga

Zabezpieczenia dostępu do kodu (CAS) zostały przestarzałe we wszystkich wersjach .NET Framework i .NET. Najnowsze wersje platformy .NET nie honorują adnotacji CAS i generują błędy, jeśli są używane interfejsy API związane z usługą CAS. Deweloperzy powinni szukać alternatywnych sposobów wykonywania zadań zabezpieczeń.

Przekazanie informacji o tożsamości (nazwa użytkownika i rola) do konstruktora PrincipalPermission może służyć do żądania, aby tożsamość aktywnego podmiotu zabezpieczeń odpowiadała tym informacjom.

Aby dopasować aktywną IPrincipal i skojarzona IIdentitytożsamość, musi być zgodna zarówno z określoną tożsamością, jak i rolą. Jeśli null jest używany ciąg tożsamości, jest interpretowany jako żądanie dopasowania dowolnej tożsamości. Użycie ciągu roli będzie zgodne z null dowolną rolą. Implikacja spowoduje przekazanie null parametru lub namerole w celu PrincipalPermission dopasowania do tożsamości i ról w dowolnym elemencie IPrincipal. Można również utworzyć obiekt PrincipalPermission , który określa tylko, czy IIdentity reprezentuje uwierzytelnioną, czy nieuwierzytelnionej jednostki. W takim przypadku name i role są ignorowane.

W przeciwieństwie do większości innych uprawnień, PrincipalPermission nie rozszerza .CodeAccessPermission Jednak implementuje IPermission interfejs. Wynika to z faktu PrincipalPermission , że nie jest to uprawnienie dostępu do kodu. Oznacza to, że nie jest przyznawana na podstawie tożsamości wykonywanego zestawu. Zamiast tego umożliwia kodowi wykonywanie akcji (Demand, Union, Intersectitd.) względem bieżącej tożsamości użytkownika w sposób zgodny ze sposobem wykonywania tych akcji na potrzeby uprawnień dostępu do kodu i tożsamości kodu.

Ważne

Przed żądaniem uprawnień podmiotu zabezpieczeń należy ustawić zasady główne bieżącej domeny aplikacji na wartość WindowsPrincipalwyliczenia . Domyślnie zasady główne są ustawione na UnauthenticatedPrincipal. Jeśli nie ustawisz zasad głównych na WindowsPrincipal, żądanie uprawnień podmiotu zabezpieczeń zakończy się niepowodzeniem. Przed żądaniem uprawnienia podmiotu zabezpieczeń należy wykonać następujący kod:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

Konstruktory

PrincipalPermission(PermissionState)
Przestarzałe.

Inicjuje PrincipalPermission nowe wystąpienie klasy o określonej wartości PermissionState.

PrincipalPermission(String, String)
Przestarzałe.

Inicjuje PrincipalPermission nowe wystąpienie klasy dla określonej klasy name i role.

PrincipalPermission(String, String, Boolean)
Przestarzałe.

Inicjuje nowe wystąpienie klasy dla określonego PrincipalPermissionnamestanu , rolei uwierzytelniania.

Metody

Copy()
Przestarzałe.

Tworzy i zwraca identyczną kopię bieżącego uprawnienia.

Demand()
Przestarzałe.

Określa w czasie wykonywania, czy bieżący podmiot zabezpieczeń jest zgodny z podmiotem zabezpieczeń określonym przez bieżące uprawnienie.

Equals(Object)
Przestarzałe.

Określa, czy określony PrincipalPermission obiekt jest równy bieżącemu PrincipalPermission.

Equals(Object)
Przestarzałe.

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
FromXml(SecurityElement)
Przestarzałe.

Rekonstruuje uprawnienie o określonym stanie z kodowania XML.

GetHashCode()
Przestarzałe.

Pobiera kod skrótu PrincipalPermission dla obiektu, który jest odpowiedni do użycia w algorytmach tworzenia skrótów i strukturach danych, takich jak tabela skrótów.

GetHashCode()
Przestarzałe.

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()
Przestarzałe.

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
Intersect(IPermission)
Przestarzałe.

Tworzy i zwraca uprawnienie, które jest skrzyżowaniem bieżącego uprawnienia i określonego uprawnienia.

IsSubsetOf(IPermission)
Przestarzałe.

Określa, czy bieżące uprawnienie jest podzbiorem określonego uprawnienia.

IsUnrestricted()
Przestarzałe.

Zwraca wartość wskazującą, czy bieżące uprawnienie jest nieograniczone.

MemberwiseClone()
Przestarzałe.

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()
Przestarzałe.

Tworzy i zwraca ciąg reprezentujący bieżące uprawnienie.

ToXml()
Przestarzałe.

Tworzy kodowanie XML uprawnienia i jego bieżącego stanu.

Union(IPermission)
Przestarzałe.

Tworzy uprawnienie, które jest związkiem bieżącego uprawnienia i określonego uprawnienia.

Dotyczy

Zobacz też