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 |
---|---|
|
Fungsi berhasil. |
|
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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk