Bagikan melalui


Mengatur Keamanan Seluruh Proses dengan CoInitializeSecurity

Fungsi CoInitializeSecurity memungkinkan Anda mengontrol skenario keamanan yang kompleks dengan mengatur keamanan untuk aplikasi secara terprogram. Topik ini menjelaskan skenario ketika Anda mungkin menggunakan CoInitializeSecurity dan memberikan beberapa detail tentang cara Anda menggunakannya.

Ada beberapa alasan mengapa Anda mungkin ingin menggunakan CoInitializeSecurity untuk mengatur keamanan di seluruh proses dalam program Anda. Misalnya, meskipun Anda dapat mengatur tingkat autentikasi dan izin akses untuk aplikasi menggunakan dcomcnfg.exe, tingkat peniruan identitas default untuk komputer mungkin bukan yang Anda inginkan untuk proses Anda. Satu-satunya cara untuk mengubah pengaturan ini untuk proses Anda adalah dengan memanggil CoInitializeSecurity.

Jika Anda ingin menggunakan penyedia keamanan Schannel, Anda harus menentukannya sebagai layanan autentikasi dalam panggilan ke CoInitializeSecurity.

Skenario umum lain di mana Anda mungkin mengatur keamanan di seluruh proses secara terprogram adalah ketika Anda ingin mengatur keamanan default untuk seluruh proses tetapi Anda memiliki satu atau beberapa objek dalam proses itu yang mengekspos antarmuka dengan persyaratan keamanan khusus. Dalam hal ini, Anda dapat memanggil CoInitializeSecurity untuk mengatur keamanan untuk proses, memungkinkan COM menangani sebagian besar pemeriksaan keamanan, dan Anda dapat memanggil metode lain untuk mengatur keamanan untuk objek dengan kebutuhan keamanan khusus. Memanggil metode dan fungsi ini dijelaskan dalam Mengatur Keamanan di Tingkat Proksi Antarmuka.

Jika aplikasi Anda memiliki persyaratan keamanan yang sangat khusus, seperti mengizinkan grup tertentu mengakses objek yang berbeda tergantung pada waktu hari, Anda mungkin ingin menangani semua keamanan Anda secara terprogram, memastikan bahwa COM tidak melakukan pemeriksaan otomatis untuk Anda sama sekali. Untuk melakukan ini, Anda harus memanggil CoInitializeSecurity, mengatur parameter dwAuthnLevel ke none dan parameter pVoid ke NULL. Jika Anda memiliki paket keamanan Anda sendiri, Anda juga perlu mendaftarkannya di parameter pAuthnSvc . Kemudian Anda dapat menangani semua keamanan Anda sendiri secara terprogram melalui panggilan ke antarmuka dan fungsi tingkat proksi yang dijelaskan dalam Mengatur Keamanan di Tingkat Proksi Antarmuka.

CoInitializeSecurity menawarkan serangkaian kemampuan yang kaya. Jika Anda memanggil CoInitializeSecurity, nilai registri diabaikan dan nilai inisialisasi keamanan yang Anda berikan ke panggilan digunakan sebagai gantinya. Bergantung pada hasil yang Anda inginkan, parameter pertama, pVoid, dapat menunjuk ke tiga jenis nilai yang berbeda: SECURITY_DESCRIPTOR , objek IAccessControl, atau penunjuk ke AppID. Dalam kebanyakan kasus, Anda akan menggunakan fungsi Windows untuk membuat SECURITY_DESCRIPTOR yang akan ditunjuk oleh pVoid .

Namun, pVoid juga dapat menunjuk ke objek IAccessControl .

Untuk menunjukkan kepada CoInitializeSecurity bahwa Anda meneruskan objek IAccessControl ke pVoid, Anda harus meneruskan nilai EOAC_ACCESS_CONTROL ke parameter dwCapabilities. Karena CoInitializeSecurity menyimpan hasil pemeriksaan akses, daftar kontrol akses tidak boleh diubah setelah memanggil CoInitializeSecurity.

Jenis nilai lain yang dapat Anda teruskan ke parameter pVoid adalah pointer ke GUID, yang merupakan AppID aplikasi Anda. Jika pVoid adalah penunjuk ke AppID, Anda harus menentukan EOAC_APPID dalam parameter pCapabilities sehingga fungsi mengetahui nilai apa yang diharapkan dalam pVoid. Jika pVoid menunjuk ke AppID, CoInitializeSecurity hanya menggunakan registri untuk nilai autentikasi dan mengabaikan semua parameter lain untuk CoInitializeSecurity.

Mengatur Keamanan Seluruh Proses