PrincipalPermission Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
[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
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}")>]
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
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ń.
Przekazując informacje o tożsamości (nazwę użytkownika i rolę) do konstruktora, PrincipalPermission można użyć go do żądania, aby tożsamość aktywnego podmiotu zabezpieczeń była zgodna z informacjami.
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 name
role
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 spójny 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 |
PrincipalPermission(String, String, Boolean) |
Przestarzałe.
Inicjuje nowe wystąpienie klasy dla określonego PrincipalPermission |
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. |