Bagikan melalui


Negosiasi Selimut Keamanan

Selimut keamanan adalah sekelompok nilai yang menjelaskan pengaturan keamanan yang berlaku untuk semua proksi dalam proses atau hanya untuk proksi antarmuka tertentu. Selimut keamanan terdiri dari nilai berikut:

  • Layanan autentikasi
  • Layanan otorisasi
  • Nama utama
  • Tingkat autentikasi
  • Tingkat peniruan
  • Identitas autentikasi
  • Kemampuan
  • Daftar kontrol akses (ACL) (hanya server)

Negosiasi selimut keamanan adalah proses yang digunakan COM untuk memilih pengaturan keamanan untuk proksi saat dibuat. Proses ini melibatkan perbandingan selimut keamanan server dengan selimut keamanan klien dan menggunakan nilai-nilai tersebut untuk membuat selimut keamanan default yang sesuai untuk proksi. Paragraf berikut menjelaskan dari mana klien dan selimut keamanan server berasal dan menjelaskan bagaimana COM menegosiasikan selimut keamanan untuk proksi menggunakan selimut keamanan klien dan server.

Klien dan server masing-masing dapat memanggil CoInitializeSecurity untuk menentukan selimut keamanan masing-masing. Jika aplikasi tidak memanggil CoInitializeSecurity secara eksplisit, COM memanggilnya secara implisit untuk aplikasi, menggunakan nilai default yang sesuai. Untuk informasi selengkapnya tentang nilai default ini, lihat Default Keamanan COM.

Beberapa parameter untuk CoInitializeSecurity berlaku ketika aplikasi adalah server, dan beberapa berlaku ketika aplikasi adalah klien. Ketika aplikasi bertindak sebagai server, parameter ini relevan: ACL, daftar layanan autentikasi/layanan otorisasi/nama utama tuple, dan tingkat autentikasi. Panggilan server ke CoInitializeSecurity, baik implisit atau eksplisit, menentukan selimut keamanan server, yang tetap diperbaiki.

Ketika aplikasi bertindak sebagai klien, nilai berikut yang diteruskan ke CoInitializeSecurity relevan: tingkat autentikasi, tingkat peniruan, identitas autentikasi, dan kemampuan. Panggilan implisit atau eksplisit klien ke CoInitializeSecurity menunjukkan selimut keamanan yang diinginkan klien.

Saat proksi dibuat, COM menggunakan nilai yang ditentukan oleh selimut keamanan server dan selimut keamanan klien untuk menegosiasikan selimut keamanan default yang sesuai untuk proksi. COM memilih layanan autentikasi yang berfungsi pada klien dan server. Layanan otorisasi dan nama utama dipilih untuk bekerja dengan layanan autentikasi. Untuk tingkat autentikasi, COM memilih yang lebih tinggi dari tingkat autentikasi yang ditentukan oleh klien dan server. Tingkat peniruan identitas dan kemampuan yang dipilih oleh COM adalah yang ditentukan oleh klien. Identitas autentikasi adalah identitas yang ditentukan oleh klien untuk layanan autentikasi yang dipilih.

Setelah selimut keamanan default dihitung, nilainya ditetapkan ke proksi yang baru dibuat. Klien dapat mengambil alih pengaturan keamanan untuk proksi dengan memanggil IClientSecurity::SetBlanket. Nilai yang ditentukan untuk SetBlanket tidak dinegosiasikan; nilai tersebut hanya ditetapkan ke proksi yang ditentukan. Namun, jika parameter default (seperti RPC_C_IMP_LEVEL_DEFAULT) diteruskan ke SetBlanket, COM menggunakan algoritma negosiasi selimut keamanan yang dijelaskan sebelumnya untuk menghitung parameter default.

Keamanan di COM