Fungsi CoSetProxyBlanket (combaseapi.h)

Mengatur informasi autentikasi yang akan digunakan untuk melakukan panggilan pada proksi yang ditentukan. Ini adalah fungsi pembantu untuk IClientSecurity::SetBlanket.

Sintaks

HRESULT CoSetProxyBlanket(
  [in]           IUnknown                 *pProxy,
  [in]           DWORD                    dwAuthnSvc,
  [in]           DWORD                    dwAuthzSvc,
  [in, optional] OLECHAR                  *pServerPrincName,
  [in]           DWORD                    dwAuthnLevel,
  [in]           DWORD                    dwImpLevel,
  [in, optional] RPC_AUTH_IDENTITY_HANDLE pAuthInfo,
  [in]           DWORD                    dwCapabilities
);

Parameter

[in] pProxy

Proksi yang akan diatur.

[in] dwAuthnSvc

Layanan autentikasi yang akan digunakan. Untuk daftar nilai yang mungkin, lihat Konstanta Layanan Autentikasi. Gunakan RPC_C_AUTHN_NONE jika tidak ada autentikasi yang diperlukan. Jika RPC_C_AUTHN_DEFAULT ditentukan, DCOM akan memilih layanan autentikasi setelah algoritma negosiasi selimut keamanan normalnya.

[in] dwAuthzSvc

Layanan otorisasi yang akan digunakan. Untuk daftar nilai yang mungkin, lihat Konstanta Otorisasi. Jika RPC_C_AUTHZ_DEFAULT ditentukan, DCOM akan memilih layanan otorisasi setelah algoritma negosiasi selimut keamanan normalnya. RPC_C_AUTHZ_NONE harus digunakan sebagai layanan otorisasi jika NTLMSSP, Kerberos, atau Schannel digunakan sebagai layanan autentikasi.

[in, optional] pServerPrincName

Nama utama server yang akan digunakan dengan layanan autentikasi. Jika COLE_DEFAULT_PRINCIPAL ditentukan, DCOM akan memilih nama utama menggunakan algoritma negosiasi selimut keamanannya. Jika Kerberos digunakan sebagai layanan autentikasi, nilai ini tidak boleh NULL. Ini harus menjadi nama utama server yang benar atau panggilan akan gagal.

Jika Schannel digunakan sebagai layanan autentikasi, nilai ini harus menjadi salah satu bentuk msstd atau fullsic yang dijelaskan dalam Nama Utama, atau NULL jika Anda tidak ingin autentikasi bersama.

Umumnya, menentukan NULL tidak akan mengatur ulang nama utama server pada proksi; sebaliknya, pengaturan sebelumnya akan dipertahankan. Anda harus berhati-hati saat menggunakan NULL sebagai pServerPrincName saat memilih layanan autentikasi yang berbeda untuk proksi, karena tidak ada jaminan bahwa nama utama yang ditetapkan sebelumnya akan valid untuk layanan autentikasi yang baru dipilih.

[in] dwAuthnLevel

Tingkat autentikasi yang akan digunakan. Untuk daftar nilai yang mungkin, lihat Konstanta Tingkat Autentikasi. Jika RPC_C_AUTHN_LEVEL_DEFAULT ditentukan, DCOM akan memilih tingkat autentikasi setelah algoritma negosiasi selimut keamanan normalnya. Jika nilai ini tidak ada, layanan autentikasi juga harus tidak ada.

[in] dwImpLevel

Tingkat peniruan yang akan digunakan. Untuk daftar nilai yang mungkin, lihat Konstanta Tingkat Peniruan. Jika RPC_C_IMP_LEVEL_DEFAULT ditentukan, DCOM akan memilih tingkat peniruan setelah algoritma negosiasi selimut keamanan normalnya. Jika NTLMSSP adalah layanan autentikasi, nilai ini harus RPC_C_IMP_LEVEL_IMPERSONATE atau RPC_C_IMP_LEVEL_IDENTIFY. NTLMSSP juga mendukung peniruan tingkat delegasi (RPC_C_IMP_LEVEL_DELEGATE) pada komputer yang sama. Jika Schannel adalah layanan autentikasi, parameter ini harus RPC_C_IMP_LEVEL_IMPERSONATE.

[in, optional] pAuthInfo

Pointer ke nilai RPC_AUTH_IDENTITY_HANDLE yang menetapkan identitas klien. Format struktur yang dimaksud oleh handel tergantung pada penyedia layanan autentikasi.

Untuk panggilan di komputer yang sama, RPC mencatat pengguna dengan kredensial yang disediakan dan menggunakan token yang dihasilkan untuk panggilan metode.

Untuk NTLMSSP atau Kerberos, strukturnya adalah struktur SEC_WINNT_AUTH_IDENTITY atau SEC_WINNT_AUTH_IDENTITY_EX . Klien dapat membuang pAuthInfo setelah memanggil API. RPC tidak menyimpan salinan penunjuk pAuthInfo , dan klien tidak dapat mengambilnya nanti dalam metode CoQueryProxyBlanket .

Jika parameter ini NULL, DCOM menggunakan identitas proksi saat ini (yang merupakan token proses atau token peniruan identitas). Jika handel mengacu pada struktur, identitas tersebut akan digunakan.

Untuk Schannel, parameter ini harus berupa penunjuk ke struktur CERT_CONTEXT yang berisi sertifikat X.509 klien atau NULL jika klien ingin membuat koneksi anonim ke server. Jika sertifikat ditentukan, pemanggil tidak boleh membebaskannya selama proksi apa pun ke objek ada di apartemen saat ini.

Untuk Snego, anggota ini adalah NULL, menunjuk ke struktur SEC_WINNT_AUTH_IDENTITY , atau menunjuk ke struktur SEC_WINNT_AUTH_IDENTITY_EX . Jika NULL, Snego akan memilih daftar layanan autentikasi berdasarkan yang tersedia di komputer klien. Jika menunjuk ke struktur SEC_WINNT_AUTH_IDENTITY_EX , anggota PackageList struktur harus menunjuk ke string yang berisi daftar nama layanan autentikasi yang dipisahkan koma dan anggota PackageListLength harus memberikan jumlah byte dalam string PackageList . Jika PackageListNULL, semua panggilan yang menggunakan Snego akan gagal.

Jika COLE_DEFAULT_AUTHINFO ditentukan untuk parameter ini, DCOM akan memilih informasi autentikasi setelah algoritma negosiasi selimut keamanan normalnya.

CoSetProxyBlanket akan gagal jika pAuthInfo diatur dan salah satu bendera kloning diatur dalam parameter dwCapabilities .

[in] dwCapabilities

Kemampuan proksi ini. Untuk daftar nilai yang mungkin, lihat enumerasi EOLE_AUTHENTICATION_CAPABILITIES . Satu-satunya bendera yang dapat diatur melalui fungsi ini adalah EOAC_MUTUAL_AUTH, EOAC_STATIC_CLOAKING, EOAC_DYNAMIC_CLOAKING, EOAC_ANY_AUTHORITY (bendera ini tidak digunakan lagi), EOAC_MAKE_FULLSIC, dan EOAC_DEFAULT. Baik EOAC_STATIC_CLOAKING atau EOAC_DYNAMIC_CLOAKING dapat diatur jika pAuthInfo tidak diatur dan Schannel bukan layanan autentikasi. (Lihat Penyelubungan untuk informasi selengkapnya.) Jika ada bendera kemampuan selain yang disebutkan di sini diatur, CoSetProxyBlanket akan gagal.

Nilai kembali

Fungsi ini dapat mengembalikan nilai berikut.

Menampilkan kode Deskripsi
S_OK
Fungsi berhasil.
E_INVALIDARG
Satu atau beberapa argumen tidak valid.

Keterangan

CoSetProxyBlanket mengatur informasi autentikasi yang akan digunakan untuk melakukan panggilan pada proksi yang ditentukan. Fungsi ini merangkum urutan panggilan umum berikut (penanganan kesalahan dikecualikan).

    pProxy->QueryInterface(IID_IClientSecurity, (void**)&pcs);
    pcs->SetBlanket(pProxy, dwAuthnSvc, dwAuthzSvc, pServerPrincName, 
        dwAuthnLevel, dwImpLevel, pAuthInfo, dwCapabilities);
    pcs->Release();

Urutan ini memanggil QueryInterface pada proksi untuk mendapatkan penunjuk ke IClientSecurity, dan dengan pointer yang dihasilkan, memanggil IClientSecurity::SetBlanket lalu merilis pointer.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header combaseapi.h (termasuk Objbase.h)
Pustaka Ole32.lib
DLL Ole32.dll

Lihat juga

CoQueryProxyBlanket

IClientSecurity::SetBlanket

Keamanan di COM

Mengatur Keamanan di Tingkat Proksi Antarmuka