PrincipalPermission Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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 |
PrincipalPermission(String, String, Boolean) |
Kedaluwarsa.
Menginisialisasi instans PrincipalPermission baru kelas untuk status autentikasi , , |
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. |