PrincipalPermission Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Upozornění
Code Access Security is not supported or honored by the runtime.
Umožňuje kontroly proti aktivnímu objektu zabezpečení (viz IPrincipal) pomocí konstruktorů jazyka definovaných pro deklarativní i imperativní akce zabezpečení. Tato třída se nemůže dědit.
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
- Dědičnost
-
PrincipalPermission
- Atributy
- Implementuje
Příklady
Následující příklad vyžaduje, aby byl aktivním objektem zabezpečení správce. Parametr name
je null
, který umožňuje každému uživateli, který je správcem, předat požadavek.
Poznámka
Ve Windows Vista nástroj Řízení uživatelských účtů (UAC) určuje oprávnění uživatele. Pokud jste členem předdefinované skupiny Administrators, máte přiřazeny dva přístupové tokeny run-time: token přístupu uživatele se standardním oprávněním a token přístupu správce. Ve výchozím nastavení máte roli standardního uživatele. Pokud chcete spustit kód, který vyžaduje, abyste měli oprávnění správce, musíte nejprve zvýšit oprávnění ze standardního uživatele na správce. Můžete to udělat při spuštění aplikace tak, že kliknete pravým tlačítkem na ikonu aplikace a označíte, že chcete spustit jako správce.
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
Poznámky
Upozornění
Zabezpečení přístupu kódu (CAS) bylo zastaralé ve všech verzích rozhraní .NET Framework a .NET. Nedávné verze rozhraní .NET nedodržují poznámky CAS a při použití rozhraní API souvisejících s cas vytvářejí chyby. Vývojáři by měli hledat alternativní způsoby provádění úloh zabezpečení.
Předáním informací o identitě (uživatelské jméno a role) konstruktoru PrincipalPermission lze použít k vyžadování, aby identita aktivního objektu zabezpečení odpovídala tomuto údaji.
Aby se shodovaly aktivní IPrincipal a přidružené IIdentity, musí se shodovat zadaná identita i role. Pokud null
se použije řetězec identity, interpretuje se jako požadavek, který odpovídá jakékoli identitě.
null
Použití řetězce role se bude shodovat s jakoukoli rolí. Z toho vyplývá, že předání null
parametru pro name
nebo role
do PrincipalPermission bude odpovídat identitě a rolím v libovolném IPrincipalsouboru . Je také možné vytvořit entitu PrincipalPermission , která pouze určuje, zda IIdentity představuje ověřenou nebo neověřenou entitu. V tomto případě name
a role
jsou ignorovány.
Na rozdíl od většiny ostatních oprávnění neprodlužuje PrincipalPermission .CodeAccessPermission Implementuje však IPermission rozhraní. Důvodem je PrincipalPermission to, že se nejedná o přístupové oprávnění kódu; to znamená, že není uděleno na základě identity spouštěného sestavení. Místo toho umožňuje kódu provádět akce (Demand, Union, Intersectatd.) proti aktuální identitě uživatele způsobem, který je konzistentní se způsobem provádění těchto akcí pro přístup ke kódu a oprávnění identity kódu.
Důležité
Před vyžádáním oprávnění objektu zabezpečení je nutné nastavit zásadu zabezpečení aktuální domény aplikace na hodnotu WindowsPrincipalvýčtu . Ve výchozím nastavení je zásada zabezpečení nastavená na UnauthenticatedPrincipal. Pokud nenastavíte zásadu zabezpečení na WindowsPrincipal, požadavek na oprávnění objektu zabezpečení selže. Před vyžádáním oprávnění objektu zabezpečení by se měl spustit následující kód:
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).
Konstruktory
PrincipalPermission(PermissionState) |
Zastaralé.
Inicializuje novou instanci PrincipalPermission třídy se zadaným PermissionStateobjektem . |
PrincipalPermission(String, String) |
Zastaralé.
Inicializuje novou instanci PrincipalPermission třídy pro zadané |
PrincipalPermission(String, String, Boolean) |
Zastaralé.
Inicializuje novou instanci PrincipalPermission třídy pro zadaný |
Metody
Copy() |
Zastaralé.
Vytvoří a vrátí identickou kopii aktuálního oprávnění. |
Demand() |
Zastaralé.
Určuje za běhu, jestli aktuální objekt zabezpečení odpovídá objektu zabezpečení určenému aktuálním oprávněním. |
Equals(Object) |
Zastaralé.
Určuje, zda je zadaný PrincipalPermission objekt roven aktuálnímu PrincipalPermissionobjektu . |
Equals(Object) |
Zastaralé.
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
FromXml(SecurityElement) |
Zastaralé.
Rekonstruuje oprávnění se zadaným stavem z kódování XML. |
GetHashCode() |
Zastaralé.
Získá hash kód pro PrincipalPermission objekt, který je vhodný pro použití v hashovací algoritmy a datové struktury, jako je hash tabulky. |
GetHashCode() |
Zastaralé.
Slouží jako výchozí hashovací funkce. (Zděděno od Object) |
GetType() |
Zastaralé.
Získá aktuální Type instanci. (Zděděno od Object) |
Intersect(IPermission) |
Zastaralé.
Vytvoří a vrátí oprávnění, které je průsečíkem aktuálního oprávnění a zadaného oprávnění. |
IsSubsetOf(IPermission) |
Zastaralé.
Určuje, zda je aktuální oprávnění podmnožinou zadaného oprávnění. |
IsUnrestricted() |
Zastaralé.
Vrátí hodnotu označující, zda je aktuální oprávnění neomezené. |
MemberwiseClone() |
Zastaralé.
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
ToString() |
Zastaralé.
Vytvoří a vrátí řetězec představující aktuální oprávnění. |
ToXml() |
Zastaralé.
Vytvoří kódování XML oprávnění a jeho aktuálního stavu. |
Union(IPermission) |
Zastaralé.
Vytvoří oprávnění, které je sjednocením aktuálního a zadaného oprávnění. |