Share via


PrincipalPermission Kelas

Definisi

Perhatian

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

Memungkinkan pemeriksaan terhadap prinsipal aktif (lihat IPrincipal) menggunakan konstruksi bahasa yang ditentukan untuk tindakan keamanan deklaratif dan imperatif. Kelas ini tidak dapat diwariskan.

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
Warisan
PrincipalPermission
Atribut
Penerapan

Contoh

Contoh berikut mengharuskan prinsipal aktif menjadi administrator. Parameternya name adalah null, yang memungkinkan setiap pengguna yang merupakan administrator untuk melewati permintaan.

Catatan

Di Windows Vista, Kontrol Akun Pengguna (UAC) menentukan hak istimewa pengguna. Jika Anda adalah anggota grup Administrator Bawaan, Anda diberi dua token akses run-time: token akses pengguna standar dan token akses administrator. Secara default, Anda berada dalam peran pengguna standar. Untuk menjalankan kode yang mengharuskan Anda menjadi administrator, Anda harus terlebih dahulu meningkatkan hak istimewa Anda dari pengguna standar menjadi administrator. Anda dapat melakukan ini saat memulai aplikasi dengan mengeklik kanan ikon aplikasi dan menunjukkan bahwa Anda ingin menjalankan sebagai 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

Keterangan

Perhatian

Keamanan Akses Kode (CAS) tidak digunakan lagi di semua versi .NET Framework dan .NET. Versi terbaru .NET tidak mematuhi anotasi CAS dan menghasilkan kesalahan jika API terkait CAS digunakan. Pengembang harus mencari cara alternatif untuk menyelesaikan tugas keamanan.

Dengan meneruskan informasi identitas (nama pengguna dan peran) ke konstruktor, PrincipalPermission dapat digunakan untuk menuntut identitas prinsipal aktif cocok dengan informasi ini.

Agar sesuai dengan yang aktif IPrincipal dan terkait IIdentity, identitas dan peran yang ditentukan harus cocok. Jika null string identitas digunakan, string tersebut ditafsirkan sebagai permintaan untuk mencocokkan identitas apa pun. Penggunaan null string peran akan cocok dengan peran apa pun. Secara implikasi, meneruskan null parameter untuk name atau role untuk PrincipalPermission akan mencocokkan identitas dan peran dalam apa pun IPrincipal. Dimungkinkan juga untuk membangun PrincipalPermission yang hanya menentukan apakah IIdentity mewakili entitas yang diautentikasi atau tidak diautentikasi. Dalam hal ini, name dan role diabaikan.

Tidak seperti sebagian besar izin lainnya, PrincipalPermission tidak memperpanjang CodeAccessPermission. Namun, mengimplementasikan IPermission antarmuka. Ini karena PrincipalPermission bukan izin akses kode; artinya, tidak diberikan berdasarkan identitas rakitan yang dieksekusi. Sebaliknya, ini memungkinkan kode untuk melakukan tindakan (Demand, Union, Intersect, dan sebagainya) terhadap identitas pengguna saat ini dengan cara yang konsisten dengan cara tindakan tersebut dilakukan untuk akses kode dan izin identitas kode.

Penting

Sebelum permintaan izin utama, anda perlu mengatur kebijakan utama domain aplikasi saat ini ke nilai WindowsPrincipalenumerasi . Secara default, kebijakan utama diatur ke UnauthenticatedPrincipal. Jika Anda tidak menetapkan kebijakan utama ke WindowsPrincipal, permintaan untuk izin utama akan gagal. Kode berikut harus dijalankan sebelum izin utama diminta:

AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).

Konstruktor

PrincipalPermission(PermissionState)
Kedaluwarsa.

Menginisialisasi instans PrincipalPermission baru kelas dengan yang ditentukan PermissionState.

PrincipalPermission(String, String)
Kedaluwarsa.

Menginisialisasi instans PrincipalPermission baru kelas untuk yang ditentukan name dan role.

PrincipalPermission(String, String, Boolean)
Kedaluwarsa.

Menginisialisasi instans PrincipalPermission baru kelas untuk status autentikasi , , roledan yang ditentukanname.

Metode

Copy()
Kedaluwarsa.

Membuat dan mengembalikan salinan identik dari izin saat ini.

Demand()
Kedaluwarsa.

Menentukan pada durasi apakah prinsipal saat ini cocok dengan prinsipal yang ditentukan oleh izin saat ini.

Equals(Object)
Kedaluwarsa.

Menentukan apakah objek yang ditentukan PrincipalPermission sama dengan objek saat ini PrincipalPermission.

Equals(Object)
Kedaluwarsa.

Menentukan apakah objek yang ditentukan sama dengan objek saat ini.

(Diperoleh dari Object)
FromXml(SecurityElement)
Kedaluwarsa.

Mengonstruksi ulang izin dengan status tertentu dari pengodean XML.

GetHashCode()
Kedaluwarsa.

Mendapatkan kode hash untuk PrincipalPermission objek yang cocok untuk digunakan dalam algoritma hashing dan struktur data seperti tabel hash.

GetHashCode()
Kedaluwarsa.

Berfungsi sebagai fungsi hash default.

(Diperoleh dari Object)
GetType()
Kedaluwarsa.

Mendapatkan instans Type saat ini.

(Diperoleh dari Object)
Intersect(IPermission)
Kedaluwarsa.

Membuat dan mengembalikan izin yang merupakan persimpangan izin saat ini dan izin yang ditentukan.

IsSubsetOf(IPermission)
Kedaluwarsa.

Menentukan apakah izin saat ini adalah subset dari izin yang ditentukan.

IsUnrestricted()
Kedaluwarsa.

Mengembalikan nilai yang menunjukkan apakah izin saat ini tidak dibatasi.

MemberwiseClone()
Kedaluwarsa.

Membuat salinan dangkal dari yang saat ini Object.

(Diperoleh dari Object)
ToString()
Kedaluwarsa.

Membuat dan mengembalikan string yang mewakili izin saat ini.

ToXml()
Kedaluwarsa.

Membuat pengodean XML dari izin dan statusnya saat ini.

Union(IPermission)
Kedaluwarsa.

Membuat izin yang merupakan gabungan izin saat ini dan izin yang ditentukan.

Berlaku untuk

Lihat juga