Objek Utama dan Identitas

Nota

Artikel ini berlaku untuk Windows.

Untuk informasi tentang ASP.NET Core, lihat ASP.NET Core Security.

Kode terkelola dapat menemukan identitas atau peran prinsipal melalui IPrincipal objek, yang berisi referensi ke IIdentity objek. Mungkin berguna untuk membandingkan identitas dan objek utama dengan konsep yang sudah dikenal seperti akun pengguna dan grup. Di sebagian besar lingkungan jaringan, akun pengguna mewakili orang atau program, sementara akun grup mewakili kategori pengguna tertentu dan hak yang mereka miliki. Demikian pula, objek identitas .NET mewakili pengguna, sementara peran mewakili keanggotaan dan konteks keamanan. Di .NET, objek utama merangkum objek identitas dan peran. Aplikasi .NET memberikan hak kepada prinsipal berdasarkan identitasnya atau, lebih umum, keanggotaan perannya.

Objek Identitas

Objek identitas merangkum informasi tentang pengguna atau entitas yang sedang divalidasi. Pada tingkat paling dasar, objek identitas berisi nama dan jenis autentikasi. Nama dapat berupa nama pengguna atau nama akun Windows, sementara jenis autentikasi dapat berupa protokol masuk yang didukung, seperti Kerberos V5, atau nilai kustom. .NET mendefinisikan GenericIdentity objek yang dapat digunakan untuk sebagian besar skenario masuk kustom dan objek yang lebih khusus WindowsIdentity yang dapat digunakan ketika Anda ingin aplikasi Anda mengandalkan autentikasi Windows. Selain itu, Anda dapat menentukan kelas identitas Anda sendiri yang merangkum informasi pengguna kustom.

Antarmuka IIdentity menentukan properti untuk mengakses nama dan jenis autentikasi, seperti Kerberos V5 atau NTLM. Semua kelas Identitas mengimplementasikan antarmuka IIdentity . Tidak ada hubungan yang diperlukan antara objek Identitas dan token proses Windows di bawah mana utas saat ini sedang dijalankan. Namun, jika objek Identitas adalah objek WindowsIdentity , identitas diasumsikan mewakili token keamanan Windows.

Objek Utama

Objek utama mewakili konteks keamanan di mana kode berjalan. Aplikasi yang menerapkan hak pemberian keamanan berbasis peran berdasarkan peran yang terkait dengan objek utama. Mirip dengan objek identitas, .NET menyediakan GenericPrincipal objek dan WindowsPrincipal objek. Anda juga dapat menentukan kelas utama kustom Anda sendiri.

Antarmuka IPrincipal mendefinisikan properti untuk mengakses objek Identitas terkait serta metode untuk menentukan apakah pengguna yang diidentifikasi oleh objek Utama adalah anggota peran tertentu. Semua kelas Utama mengimplementasikan antarmuka IPrincipal serta properti dan metode tambahan yang diperlukan. Misalnya, common language runtime menyediakan kelas WindowsPrincipal, yang mengimplementasikan fungsionalitas tambahan untuk memetakan keanggotaan grup menjadi peran.

Objek Utama terikat ke objek konteks panggilan (CallContext) dalam domain aplikasi (AppDomain). Konteks panggilan default selalu dibuat dengan setiap AppDomain baru, sehingga selalu ada konteks panggilan yang tersedia untuk menerima objek Utama . Ketika thread baru dibuat, sebuah objek CallContext juga dibuat untuk thread tersebut. Referensi objek Principal secara otomatis disalin dari utas pembuat ke CallContext utas baru. Jika runtime tidak dapat menentukan objek Principal mana yang milik pembuat utas, maka ia mengikuti kebijakan default untuk pembuatan objek Principal dan Identitas.

Kebijakan khusus domain aplikasi yang dapat dikonfigurasi menentukan aturan untuk memutuskan jenis objek Utama apa yang akan dikaitkan dengan domain aplikasi baru. Jika kebijakan keamanan mengizinkan, runtime dapat membuat objek Utama dan Identitas yang mencerminkan token sistem operasi yang terkait dengan utas eksekusi saat ini. Secara default, runtime menggunakan objek Utama dan Identitas yang mewakili pengguna yang tidak diaturentikasi. Runtime tidak membuat objek Utama dan Identitas default ini sampai kode mencoba mengaksesnya.

Kode tepercaya yang membuat domain aplikasi dapat mengatur kebijakan domain aplikasi yang mengontrol konstruksi objek Utama dan Identitas default. Kebijakan khusus domain aplikasi ini berlaku untuk semua utas eksekusi di domain aplikasi tersebut. Host tepercaya yang tidak dikelola secara inheren memiliki kemampuan untuk mengatur kebijakan ini, tetapi kode terkelola yang menetapkan kebijakan ini harus memiliki System.Security.Permissions.SecurityPermission untuk mengontrol kebijakan domain.

Saat mengirimkan objek Utama di seluruh domain aplikasi tetapi dalam proses yang sama (dan oleh karena itu pada komputer yang sama), infrastruktur jarak jauh menyalin referensi ke objek Utama yang terkait dengan konteks pemanggil ke konteks penerima panggilan.

Lihat juga